为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

炎炎设计 2019-06-12 17:08:17
.bashrc、.bash_profile和.Environment之间有什么区别?多年来,我使用了许多不同的基于*nix的系统,似乎我使用的每一种Bash都有不同的算法来决定要运行哪个启动脚本。对于设置环境变量和别名以及打印启动消息(例如MOTDS)这样的任务,哪个启动脚本是进行这些操作的合适位置?把东西放进去有什么区别?.bashrc, .bash_profile,和.environment?我还见过其他文件,如.login, .bash_login,和.profile这些是否相关?在物理登录、通过ssh远程登录和打开一个新的终端窗口时,它们的运行有什么不同?跨平台(包括MacOSX(及其Terminal.app)和CygwinBash)是否存在显著差异?
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

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/shbash,通常是向后兼容的。/bin/sh,将宣读.profile如果一个人存在的话。


查看完整回答
反对 回复 2019-06-12
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

古典主义,~/.profile由Bourne Shell使用,Bash可能支持将其作为遗留度量。再一次,~/.login~/.cshrc被C Shell所使用-我不确定Bash是否使用它们。

这个~/.bash_profile只会在登录时使用一次。这个~/.bashrc每次启动shell时都会读取脚本。这类似于/.cshrc为C壳牌。

其中一个后果就是~/.bashrc应该尽可能轻量级(最小),以减少在启动非登录shell时的开销。

我相信~/.environment文件是Korn Shell的兼容文件。


查看完整回答
反对 回复 2019-06-12
  • 3 回答
  • 0 关注
  • 1201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信