交互性测试
有时 bash source 您的 ~/.bashrc,即使他不是真正的交互式 shell,比如当使用像 rsh 和 scp 这样的命令时。将这些牢记在心很重要,因为像前面我们用 fortune 命令所做的相同,打印出文本可能真的会打乱这些非交互式的 bash 会话。在从启动文档打印出文本之前,使用 PS1 变量来检测当前的 shell 是否是交互式 shell 是个好办法:
if [ -n "$PS1" ]; then
fortune
fi
/etc/profile 和 /etc/skel
作为系统管理员,您掌管着 /etc/profile。因为当初次登录时,每个人都 source 他,所以使他保持工作状态很重要。他也是提供给新用户的强大工具,该工具使新用户一登录进他们的新帐户,一切就正确运行。
但是,有一些您可能希望新用户作为缺省值的配置,而且允许容易地修改他们。这是 /etc/skel 目录的用途所在。当您用 useradd 命令来创建一个新用户帐户时,他将任何的文档从 /etc/skel 复制到用户的新的主目录中。这意味着您能够将有帮助的 .bash_profile 和 .bashrc 文档放在 /etc/skel 中,使新用户有一个好的开始。
export
能够给 bash 中的变量作上标记,使他们在任何 bash 启动的新的 shell 中配置相同;这被称为做上标记以便导出。在您的 shell 会话中,您能够列出 bash 任何的当前标记为要导出的变量:
$ export
declare -x EDITOR="vim"
declare -x HOME="/home/chouser"
declare -x MAIL="/var/spool/mail/chouser"
declare -x PAGER="/usr/bin/less"
declare -x PATH="/bin:/usr/bin:/usr/local/bin:/home/chouser/bin"
declare -x PWD="/home/chouser"
declare -x TERM="xterm"
declare -x USER="chouser"
标记要导出的变量
假如变量没有标记为导出,任何他启动的新的 shell 将不会配置该变量。但是,您能够通过将变量传给内置的 export 来将其标记为导出:
$ FOO=foo
$ BAR=bar
$ export BAR
$ echo $FOO $BAR
foo bar
$ bash
$ echo $FOO $BAR
bar
在本示例中,一起配置了变量 FOO 和 BAR,但是只有 BAR 被标记为导出。当启动了新的 bash,他丢掉 FOO 的值。假如您退出这个新的 bash,您能够看到最初的 bash 仍然有 FOO 和 BAR 的值:
$ exit
$ echo $FOO $BAR
foo bar
导出和配置 -x
由于这种行为,能够在 ~/.bash_profile 或 /etc/profile 中配置变量和标记为导出,然后再也无需重新配置。但是,有一些不能导出的选项,因此为了配置得一致,必须将他们放在您的 ~/.bashrc 和 环境配置文档中。这些选项用内置的 set 来调整:
$ set -x
-x 选项使 bash 打印出他要运行的每个命令:
$ echo $FOO
echo foo
foo
这对于理解没有预料到的引用行为或类似的莫名其妙的现象很有用。要关闭 -x 选项,配置 set x。请参阅 bash 手册页来获取内置的 set 的任何选项的信息。
用“set”配置变量
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




