shell简介及变量的定义查看撤销
2018-10-05 18:12 烟雨楼人 阅读(745) 评论(0) 编辑 收藏 举报1.shell分类及相关软件
图形界面Shell(Graphical User Interface shell 即 GUI shell),如:GNOME、KDE
命令行式Shell(Command Line Interface shell ,即CLI shell),如:bash/sh/ksh/csh(Unix/linux 系统) Shell软件有:Bourne shell 、cshell 、 Korn shell 、Bourne Again shell(bash) 、POSIX shell AIX下是Korn Shell. ---IBM Solaris缺省的是Bourne shell. ---SUN FreeBSD缺省的是C shell --免费 HP-UX缺省的是POSIX shell. --惠普 Linux是Bourne Again shell. ---bash |
2.变量的声明与引用、撤销
定义本地变量: declare //内部命令,用来声明变量,并可以指定变量类型
选项:
-i
//声明为整型
-a //声明为数组 -r //声明变量为只读 -x //声明环境变量 |
注意:declare作用范围仅限于当前源程序文件(加了选项 -x除外),对SHELL来讲:仅对当前shell进程生效,对子进程或者其他shell无效。 注意:变量名只能包含字母,数字和下划线三类字符 注意:当变量声明为整型时,赋值字符型,其值为0 |
例子:
[lbg@lbg root]$ declare -i a=123
[lbg@lbg root]$ echo $a 123 [lbg@lbg root]$ declare -i a=abc [lbg@lbg root]$ echo $a 0 |
进入子进程的方法:
进入子进程的方法:直接输入bash即可:[lbg@lbg root]$ bash(可通过pstree命令验证查看) |
定义环境变量:export
export var_name=value // 作用范围:当前shell及其子shell |
例子:
[lbg@lbg root]$ export
yy=111
---定义环境变量yy,并赋值为111
[lbg@lbg root]$ bash [lbg@lbg root]$ echo $yy 111 [lbg@lbg root]$ exit exit [lbg@lbg root]$ echo $yy 111 |
变量的引用:${a}
$a
//引用变量a
规范做法是: ${a} //花括号在有时候是可以省略的 |
例子:
[lbg@lbg root]$ declare -i b=234
[lbg@lbg root]$ echo $b 234 [lbg@lbg root]$ echo ${b} 234 |
环境变量的查看:
命令: env / printenv /export
[lbg@lbg root]$ export [lbg@lbg root]$ env [lbg@lbg root]$ printenv 查看修改系统预设的环境变量:echo $PATH [lbg@lbg root]$ echo $PATH |
撤销变量:unset 变量名
unset 变量名 //撤销变量时不能加$符号
环境变量的撤销:unset:环境变量在哪个bash里声明的在哪撤销,否则撤销只在其shell进程生效,其他shell进程无影响,仍可用该变量。 注意:只读变量不能通过unset撤销.关闭当前shell或脚本运行完后自动撤销. |
例子:
[lbg@lbg root]$ echo ${b}
234 [lbg@lbg root]$ unset b [lbg@lbg root]$ echo ${b}
[lbg@lbg root]$ |
特别的环境变量:PS1/PS2/PS3/PS4
[lbg@lbg root]$ echo $PS1
[\u@\h \W]\$ [lbg@lbg root]$ echo $PS2 > [lbg@lbg root]$ echo $PS3
[lbg@lbg root]$ echo $PS4 + |
变量PS1说明:
PS1
[\u@\h \W]\$
//定义当前命令提示符,可以使用一些内置的宏来定义
\h //显示主机名第一个.之前的内容 \H //完整主机名 \W //基名 #basename dir_name \w //绝对路径 \$ //uid=0-->#,非零为$ |
变量PS2
>
:续航符。
把一个预处理指示写成多行要用“\”续行,在击回车键之前输入“\”,即可实现多行命令输入。
[root@lbg test]# ls a b c [root@lbg test]# ls a \ > b \ > c a b c |
说明:PS3:不常见
说明:PS4 +:执行命令时,如果追踪命令执行的话,会在命令之前显示+
shell 跟踪简单的来说就是跟踪 shell 脚本中的命令的执行。要打开 shell 跟踪,请使用 -x 调试选项。如:Bash -x test.sh |
特殊变量?
变量?存放程序执行的状态返回值,0表示正常状态,非0表示异常。 [root@lbg test]# echo $? ---为0说明上一个命令正常执行 0 |
变量$HOME表示家目录
echo $HOME --显示家目录
[root@lbg tmp]# echo $HOME /root |
变量$HISTSIZE表示history命令保存的记录数:
[root@lbg tmp]# echo $HISTSIZE
1000 |