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