Answers:
实际上,bash
具体来说就是读取.bashrc
(和/etc/bash.bashrc
)。有很多不同的外壳。
在bash的手册页(由Brian Fox和切特·拉梅;同时信息页面“Bash的启动文件”)是最权威的参考:
启动不是登录外壳程序的交互式外壳程序时,bash会从中读取并执行命令
~/.bashrc
,如果该文件存在的话。使用--norc
选项可以禁止这种情况。该--rcfile
文件选项将强制bash读取和文件,而不是执行命令~/.bashrc
。例如,以非交互方式启动bash时,要运行shell脚本,它将
BASH_ENV
在环境中查找变量,如果变量出现在环境中,则将其值扩展,并将扩展后的值用作要读取和执行的文件的名称。Bash的行为就像执行以下命令一样:if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
但是
PATH
变量的值不用于搜索文件名。
该文件只是shell命令。它通常用于更改提示,设置环境变量和定义Shell过程。传统上,该文件.profile
用于此目的,但bash
扩展名太多,以至于想要将重载放入启动文件的用户都需要自己的启动文件。
“ 非登录外壳 ”表示诸如脚本启动以及通常由窗口管理器启动的终端窗口之类的东西。有时我将* nix系统设置为具有.bashrc
和BASH_ENV
仅仅是source .profile
。只要您不偏离POSIX shell命令的范围,那么您将在任何shell中获得相同的初始化。
当sh
真正存在时bash
,这尤其有价值,有时会发生。为此使用:
. .profile
这是如此复杂的原因之一是,有时人们将产生输出的内容放入shell启动文件中,或者无条件设置提示。在语言中运行Shell程序和反引号命令时,这会引起很多问题,更不用说system(3)
C程序了。bash
我认为启动方式被设计为在输出和提示设置可以的情况下有一个文件,而在输出和提示设置没有问题的情况下有一个文件。传统上,将通过运行时测试来区分交互性,例如,检查是否设置了提示。
当Bash启动时,它将以各种不同的脚本执行命令。
当Bash作为交互式登录shell调用时,它首先从文件/ etc / profile中读取并执行命令(如果该文件存在)。读取该文件后,它将按该顺序查找〜/ .bash_profile,〜/ .bash_login和〜/ .profile,并从存在的且可读的第一个命令中读取并执行命令。
当退出登录外壳程序时,Bash从〜/ .bash_logout文件(如果存在)中读取并执行命令。
启动不是登录外壳程序的交互式外壳程序时,如果该文件存在,则Bash从〜/ .bashrc读取并执行命令。使用--norc选项可以禁止这种情况。--rcfile file选项将强制Bash从文件而不是〜/ .bashrc中读取并执行命令。
http://en.wikipedia.org/wiki/Bash_(Unix_shell)
以下是一些技巧和提示:
http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
让我们尝试设置提示,以便它可以显示今天的日期和主机名:
PS1="\d \h $ "
.profile
之后.bash_profile
呢?有逻辑吗?