我只是花了很多时间阅读登录和交互式shell,以及为什么要在各种配置文件和bashrc文件中设置环境变量,shell函数等。在这篇文章中提到要在〜/ .bashrc中设置bash特定的东西,例如提示选项。这使我想知道PS1变量。在我所见过的所有示例中,它们都有类似的内容export PS1=""
。因为它仅对bash有意义,是否应该将其真正导出到环境中?只是PS1=""
在我的〜/ .bashrc中产生了预期的效果,但是我想知道是否丢失了某些东西。
没错:PS1
仅在bash的交互式实例中有意义,因此应在其中设置它~/.bashrc
,而不应该将其导出。PS1
在其他外壳程序中也是有意义的,但是它具有不同的含义,因为外壳程序之间的快速扩展有所不同。实际上,即使是在bash实例之间,PS1
也可能具有不同的含义,因为含义取决于shell选项(至少取决于promptvars
)。
PS1
从.profile
1970年代开始向环境中导出是一个回溯到1970年代的时代,当时只有一个使用它的外壳(Bourne外壳)并且没有配置文件。如果您始终使用相同的外壳程序,并且永远不要以不同的方式配置它,那么它今天仍然可以使用。但是,交互启动时未对脚本纯粹设计的所有现代的shells(csh和ksh,bash和的zsh,...)读取配置文件(.cshrc
,.kshrc
,.bashrc
,.zshrc
,...),所以上世纪70年代的方法是不再需要。PS1
在特定于外壳程序的文件中进行设置和其他特定于外壳程序的设置,而不是将其导出到环境中,可以避免在使用其他无法显示通常提示的外壳程序配置,不同的外壳程序或其他终端时发生问题幻想。环境PS1
特定于shell的文件始终有效,而将其设置.profile
并导出仅在“简单”情况下有效,因此没有理由不正确地进行操作,但是网络上甚至还有很多糟糕的教程,甚至发行版中的默认配置错误。Cestest vie。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句