为什么我必须在我打开的每个终端中使用 `source .profile`?

cai*_*fei 11 .profile environment-variables

当我们~/.profile在 Ubuntu 中更改某些变量时,我们执行命令source .profile. 那么这个改变在这个终端有效。如果我们打开一个新终端,我们必须source .profile再次执行该命令。所以看起来不同的终端虽然可能属于同一个用户,但它们都有自己的环境。

让每个终端都有自己的环境路径有什么好处?如果属于同一用户的不同终端共享相同的环境变量,似乎会更好。

Zan*_*nna 15

原因是它~/.profile仅来自登录 shell。当您打开一个新的终端窗口时,默认情况下启动的 shell 是非登录 shell。如果您注销并重新登录,更改~/.profile将在您的所有终端中生效,因为它~/.profile是在您登录会话时产生的。

并不是不同的终端窗口有不同的环境,而是采购~/.profile~/.profile在当前 shell 中执行(这正是source命令所做的)。

相比之下,更改~/.bashrc将立即影响您打开的任何新终端窗口,或您通过键入 开始的任何 Bash shell bash,因为它来自所有交互式 Bash shell。