.bashrc、.bash_profile和.Environment之间有什么区别?

.bashrc、.bash_profile和.Environment之间有什么区别?

多年来,我使用了许多不同的基于*nix的系统,似乎我使用的每一种Bash都有不同的算法来决定要运行哪个启动脚本。对于设置环境变量和别名以及打印启动消息(例如MOTDS)这样的任务,哪个启动脚本是进行这些操作的合适位置?

把东西放进去有什么区别?.bashrc.bash_profile,和.environment?我还见过其他文件,如.login.bash_login,和.profile这些是否相关?在物理登录、通过ssh远程登录和打开一个新的终端窗口时,它们的运行有什么不同?跨平台(包括MacOSX(及其Terminal.app)和CygwinBash)是否存在显著差异?


炎炎设计
浏览 1206回答 3
3回答

翻阅古今

shell配置文件的主要区别是,有些文件只能通过“登录”shell读取(例如。当您从另一个主机登录或在本地Unix机器的文本控制台登录时)。这就是所谓的,比如说,.login或.profile或.zlogin(取决于您使用的shell)。然后,您有通过“交互式”shell读取的配置文件(例如,连接到终端的配置文件(例如,在窗口系统下运行的终端模拟器)。这些都是有名字的.bashrc, .tcshrc, .zshrc等bash使这件事变得更复杂.bashrc是只能由两者兼有的shell读取互动式和非登录所以你会发现大多数人最后都会告诉他们.bash_profile也可阅读.bashrc就像[[ -r ~/.bashrc ]] && . ~/.bashrc其他shell的行为不同(如与zsh, .zshrc总是读取一个交互式的shell,不管它是否登录。bash的手册页解释了读取每个文件的情况。是的,机器之间的行为通常是一致的。.profile只是最初使用的登录脚本文件名。/bin/sh. bash,通常是向后兼容的。/bin/sh,将宣读.profile如果一个人存在的话。

阿波罗的战车

古典主义,~/.profile由Bourne Shell使用,Bash可能支持将其作为遗留度量。再一次,~/.login和~/.cshrc被C Shell所使用-我不确定Bash是否使用它们。这个~/.bash_profile只会在登录时使用一次。这个~/.bashrc每次启动shell时都会读取脚本。这类似于/.cshrc为C壳牌。其中一个后果就是~/.bashrc应该尽可能轻量级(最小),以减少在启动非登录shell时的开销。我相信~/.environment文件是Korn Shell的兼容文件。
打开App,查看更多内容
随时随地看视频慕课网APP