电脑技术学习

对话 UNIX: 第 10 部分,定制您的 Shell

dn001

  交互的 Shell 更容易解释:如果 Shell 对您的输入(标准输入)作出反应并显示相应的输出(标准输出),那么这个 Shell 是交互的。现在,X 终端已经取代了哑终端,但是 Shell 模式的约定和范例仍然保留了下来。通常,X 终端作为 -bash 产生 Bash,强制 Bash 执行登录启动序列。

  对于 Bash,交互的登录 Shell 将运行 /etc/profile,如果它存在。(如果使用 bash --login 调用 Bash,那么非交互的 Shell 也运行 /etc/profile。)接下来,交互的登录 Shell 寻找 ~/.bash_profile,如果这个脚本存在并且是可读的,那么将执行这个脚本。否则,Shell 将继续尝试执行 ~/.bash_login。如果后面的那个文件不存在或者是不可读的,那么 Bash 最后将尝试执行 ~/.profile。Bash 仅运行一个针对个人的启动文件,然后立即停止启动序列。当 Bash 登录 Shell 退出时,它将执行 ~/.bash_logout。

  如果 Bash Shell 是交互的,但不是登录 Shell,那么 Bash 将尝试读取 ~/.bashrc。并不执行其他的文件。如果 Bash Shell 是非交互的,那么它将扩展 BASH_ENV 环境变量的值,并执行所指定的文件。

  当然,您可以在 Bash 的标准脚本中调用自己的脚本,以便提供附加的设置。特殊的 Shell 缩写 .(或者它的同义词 source)表示执行另一个 Shell 脚本。例如,如果您希望在交互的登录 Shell 和交互的非登录 Shell 之间共享 ~/.bashrc 中的设置,可以使用下面的命令:

. ~/.bashrc

  在 ~/.bash_profile 中。当 Shell 碰到点 (.) 命令时,它将立刻执行指定的 Shell 脚本。

  深入研究 Shell

  研究启动序列的最好的方法是创建一些简单的 Shell 启动文件。例如,如果您运行 ssh farfaraway ls 命令,SSH 在远程系统上产生的名为 farfaraway 的远程 Shell 是一个登录 Shell 吗?是交互的 Shell 吗?让我们来找出答案。

标签: