shell预备知识

设置默认shell

/etc/passwd配置文件中设置

临时调用:bash、ksh、csh


设置环境变量:[export] 变量名=变量值

注:修改效力仅及于该次登录操作

引用环境变量:$变量名


常用环境变量

env命令:对当前设置的环境变量进行查看

PATH(设置命令搜索路径):决定了shell将到哪些目录中寻找命令或程序  。增加目录file:#PATH=$PATH:/file

比如/opt/bin中有一个脚本a,在没有设置之前需要通过绝对路径执行/opt/bin/a,而现在就可以在任意位置执行了

PS1变量:设置作为命令提示符的字符串

PS2变量:设置作为命令提示符的字符串,该提示符在用户尚未键入完整命令前按下[回车键]后显示的提示符。


系统配置文件:所有的shell配置文件都保存在/etc目录中,包括:bashrc、profile以及/etc/profile.d目录中的脚本文件

/etc/bashrc:设定别名和一些其它的功能,该文件设定了umask的数值,该参数决定了新创建的文件的默认权限,另外还设定了命令行下的提示符。

/etc/profile:用于设定系统环境,设定PATH、USER、LOGNAME、MAIL、HOSTNAME、HISTSIZE以及INPUTRC变量,以及最后运行/etc/profile.d目录中的脚本文件。

/etc/profile.d:一个包含若干用bash语言写的shell脚本文件的目录,这些脚本文件由/etc/profile启动运行。


用户的配置文件(优先级更高)

~/.bash_profile:用户可使用该文件设置专用于自己的shell信息,该文件仅在用户登录时执行一次!默认情况下,它设置一些环境变量,执行用户的.bashrc文件;

~/.bashrc:该文件包含专用于用户的shell信息,每当启动一个新的窗口时该文件被读取;

~/.bash_logout:当每次退出系统(退出bashshell)时,执行该文件

shell变量

shell将所赋的每个值都当作字符串,如果串中含有空白字符,应用“”括起

设置变量:name=value

引用变量:$name

清除变量:unset name


局部变量和全局变量

局部变量:只作用于当前为它赋值的shell进程,对其他各个子shell进程不产生影响;

全局变量(传值方式):经过export命令输出的变量对当前shell的各个子shell、以及子shell的子shell起作用


变量替换

${var:-word}var有值且非空时取该值,否则取word的值,但var不变

${var:=word}var有值且非空时取该值,否则取word的值,同时var被赋值为word


位置参数和与预定义变量

由shell在程序运行时设置,只能引用不能修改!。共10个变量,从程序名开始依次为0-9

$0 当前shell程序的名字

$1~ $9 命令行上的第一到第九个参数

$# 命令行上的参数个数

$* 命令行上的所有参数

$@ 分别用双引号引用命令行上的所有参数

$$ 当前进程的进程标识号(PID)

$? 上一条命令的退出状态

$! 最后一个后台进程的进程标识号

注意$@和 $*的区别


通过set命令赋值

set one two three

echo$0 $1 $2 $3


原文地址:https://www.cnblogs.com/jcuan/p/5558465.html