bashrc 的功能与 bash_profile 有何不同?

bashrc 的功能与 bash_profile 有何不同?

由于 IntelliJ 不想提交我的代码,我一直失去理智。我已经把export GPG_TTY=$(tty)我的.bash_profile而不是我的.bashrc; echoing$GPG_TTY以正确的路径响应,但我仍然不断收到gpg: failed to sign the data错误。

据我收集的信息,.bash_profile当 Bash 作为交互式登录 shell 被调用时,它会被读取并执行,而当.bashrc作为交互式非登录 shell 被调用时,它会被读取和执行;$PATH因此变量应该进入.bash_profile...?或者,至少我是这么认为的。我想知道两者之间的功能差异是什么:为什么它在我的个人资料中不起作用,但在 rc 中却起作用?

答案1

问题的解决方案:放入export varinto .bashrc,然后调用.bashrcfrom .bash_profile

是的,区别在于登录与非登录。当您登录到 时,例如通过非 GUI 计算机或在非 GUI 计算机上登录时,将bash处于登录模式。但是一旦您登录,所有新的 bash 实例都将以非登录模式启动。bashssh

如果您有 GUI 桌面,您将登录到 WM 而不是bash.因此,您永远不会处于bash登录模式(除非您专门使用选项来调用它--login)。因此,即使.bash_profile在带有 GUI 的工作站上也是毫无意义的。
但您仍然可以拥有它,以防您通过 登录到该计算机用户ssh,或者您的 WM 中断并且您需要启动恢复程序。

当然,官方文档是必读的: https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Bash-Startup-Files

相关内容