74、shell 小知识两点,提示符,特殊变量,export
1、关于提示符,特殊变量
1)Bash有两级提示符。第一级提示符是经常见到的Bash在等待命令输入时的情况,默认值是$符号,PS1为变量值。第二级提示符是当Bash为执行某条命令需要用户输入更多信息时显示的,默认为>,变量值为PS2。
2)Bash有一些特殊变量,能控制shell以不同的方式工作。例如,变量noclobber能防止在重定向输出时意外地覆盖一个文件。通过set命令可以设置noclobber变量的有效或无效。set命令有两个参数:一个是指定变量开(on)或关(off)的选项,一个是特殊变量的变量名。要使某一特殊变量开(有效),用-o选项,要使其关(无效),用+o选项。例如:
$ set -o noclobber // 使noclobber变量开
$ set +o noclobber // 使noclobber变量关
3)ignoreeof变量用来禁止使用ctrl+d来退出shell(ctrl+d不仅用来退出shell,而且可以终止用户直接输往标准输出上的输入。
$ set -o ignoreeof
4)noclobber变量可以在重定向输出时保护已存在的文件,防止被意外地覆盖。
5)设置noglob变量后,shell将不扩展文件名中一些特殊的字符或字符串。如字符*、?、[]等将不再作为通配符。
2、关于export
用户登录到Linux系统后,系统将启动一个用户shell。在这个shell中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序。运行shell脚本程序时,系统将创建一个子shell。此时,系统中将有两个shell,一个是登录时系统启动的shell,另一个是系统为运行脚本程序创建的shell。 当一个脚本程序运行完毕,它的脚本shell将终止,可以返回到执行该脚本之前的shell。从这种意义上来说,用户可以有许多 shell,每个shell都是由某个shell(称为父shell)派生的。
在子shell中定义的变量只在该子shell内有效 。如果在一个shell脚本程序中定义了一个变量,当该脚本程序运行时,这个定义的变量只是该脚本程序内的一个局部变量,其他的shell不能引用它,要使某个变量的值可以在其他shell中被改变,可以使用export命令对已定义的变量进行输出。export命令将使系统在创建每一个新的shell时定义这个变量的一个拷贝。这个过程称之为变量输出。
3、用户可以将每次启动Bash所需要执行的命令放入初始化文件中,最常见的命令就是alias命令和变量定义两种。系统中的每个用户在其主目录中都有个.bash_profile文件,Bash每次启动时都将读取该文件,其中包含的所有命令都将被执行。
参考