Mik*_*ney 13 bash environment-variables bashrc
我只是花了很多时间阅读登录和交互式 shell 以及为什么应该或不应该在各种配置文件和 bashrc 文件中设置环境变量、shell 函数等。在这篇文章中提到应该在 ~/.bashrc 中设置 bash 特定的东西,比如提示选项。这让我想知道 PS1 变量。在我见过的所有关于此的示例中,它们都有类似export PS1=""
. 这真的应该导出到环境中,因为它只对 bash 有意义吗?只是PS1=""
在我的 ~/.bashrc 中为我产生了预期的效果,但我想知道我是否遗漏了什么。
Gil*_*il' 18
这是正确的:PS1
仅在 bash 的交互式实例中才有意义,因此它应该被设置~/.bashrc
并且不应该被导出。PS1
在其他 shell 中也是有意义的,但它有不同的含义,因为 shell 之间的提示扩展不同。事实上,即使在 bash 实例之间,PS1
也可能有不同的含义,因为含义取决于 shell 选项(至少promptvars
)。
导出PS1
到环境 from.profile
是对 1970 年代的倒退,当时只有一个 shell(Bourne shell)使用它并且它没有配置文件。如果您始终使用相同的 shell 并且从不以不同方式对其进行配置,那么它今天仍然有效。但是,所有不是纯粹为脚本设计的现代 shell(csh、ksh、bash、zsh 等)在交互式启动时都会读取配置文件(.cshrc
, .kshrc
, .bashrc
, .zshrc
, ...),因此 1970 年代的方法不再必要。PS1
在特定于 shell 的文件中设置和其他特定于 shell 的设置,而不是将其导出到环境中,可避免在您使用不同的 shell 配置或不同的 shell 或无法显示通常提示的不同终端时破坏事情幻想。环境PS1
在特定于 shell 的文件中一直有效,而将其设置.profile
和导出仅在“简单”情况下有效,因此没有理由不以正确的方式进行操作,但是网络上有很多糟糕的教程,甚至发行版中的错误默认配置。C'est la vie。