Dig*_*oss 74
实际上,它bash
特别是读取.bashrc
(和/etc/bash.bashrc
)。有很多不同的贝壳。
在bash的手册页(由Brian Fox和切特·拉梅;同时信息页面“Bash的启动文件”)是最权威的参考:
当一个不是登录 shell 的交互式 shell 启动时,bash 读取并执行来自 的命令
~/.bashrc
(如果该文件存在)。这可以通过使用--norc
选项来禁止。该--rcfile
文件选项将强制bash读取和文件,而不是执行命令~/.bashrc
。例如,当 bash 以非交互方式启动时,要运行一个 shell 脚本,它会
BASH_ENV
在环境中查找变量,如果它出现在那里,就展开它的值,并使用展开的值作为文件名来读取和执行。Bash 的行为就像执行了以下命令:Run Code Online (Sandbox Code Playgroud)if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
但
PATH
变量的值不用于搜索文件名。
该文件只是shell命令。它通常用于更改提示、设置环境变量和定义外壳程序。传统上,该文件.profile
用于此目的,但它bash
有很多扩展名,以至于想要将bashisms放在启动文件中的用户需要自己的启动文件。
“不是登录外壳”意味着脚本启动和通常由窗口管理器启动的终端窗口之类的东西。有时我将 *nix 系统设置为拥有.bashrc
和BASH_ENV
仅 source .profile
. 只要您不偏离 POSIX shell 命令,那么您将在任何 shell 中获得相同的初始化。
当sh
is real 时特别有价值bash
,这有时会发生。要做到这一点,请使用:
. .profile
Run Code Online (Sandbox Code Playgroud)
这一切如此复杂的一个原因是,有时人们会将产生输出的东西放入 shell 启动文件中,或者他们无条件地设置提示。在语言中运行 shell 程序和反引号命令时,这会导致很多问题,更不用说system(3)
C 程序了。bash
我认为,启动方式设计为具有一个输出和提示设置正常的文件和一个不正常的文件。传统上,将进行运行时测试以区分交互性,例如,检查是否设置了提示。
小智 13
当 Bash 启动时,它会执行各种不同脚本中的命令。
当 Bash 作为交互式登录 shell 被调用时,它首先从文件 /etc/profile 读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,然后从第一个存在且可读的命令中读取和执行命令。
当登录 shell 退出时,Bash 从文件 ~/.bash_logout(如果存在)读取并执行命令。
当一个不是登录 shell 的交互式 shell 启动时,Bash 从 ~/.bashrc 读取并执行命令(如果该文件存在)。这可以通过使用 --norc 选项来禁止。--rcfile 文件选项将强制 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 $ "
Run Code Online (Sandbox Code Playgroud)
小智 11
它应该包含您的 shell 的各种“初始化”命令,例如:
alias ll='ls -l'
)。 归档时间: |
|
查看次数: |
368840 次 |
最近记录: |