由于 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 var
into .bashrc
,然后调用.bashrc
from .bash_profile
。
是的,区别在于登录与非登录。当您登录到 时,例如通过非 GUI 计算机或在非 GUI 计算机上登录时,将bash
处于登录模式。但是一旦您登录,所有新的 bash 实例都将以非登录模式启动。bash
ssh
如果您有 GUI 桌面,您将登录到 WM 而不是bash
.因此,您永远不会处于bash
登录模式(除非您专门使用选项来调用它--login
)。因此,即使.bash_profile
在带有 GUI 的工作站上也是毫无意义的。
但您仍然可以拥有它,以防您通过 登录到该计算机用户ssh
,或者您的 WM 中断并且您需要启动恢复程序。
当然,官方文档是必读的: https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Bash-Startup-Files