是~/.bashrc
唯一指定用户特定环境变量、别名、PATH
变量修改等的地方吗?
我问是因为这似乎~/.bashrc
是bash
-only,但其他 shell 也存在......
Bash 似乎区分已导出的变量和未导出的变量。
例子:
$ FOO=BAR
$ env | grep FOO
$ set | grep FOO
FOO=BAR
Run Code Online (Sandbox Code Playgroud)
set
看到变量但env
没有。
$ export BAR=FOO
$ env | grep FOO
BAR=FOO
$ set | grep FOO
BAR=FOO
FOO=BAR
Run Code Online (Sandbox Code Playgroud)
set
看到两个变量,但env
只看到导出的变量。
我知道这set
是一个内置的 bash 而env
不是。
导出的变量和不导出的变量之间有什么区别?
问题说明了一切。我目前使用 Arch Linux 和 zsh,但我想要一个(至少)既适用于 VT 又适用于 xterm 的解决方案,并且(希望最好)在我切换发行版或 shell 时仍能继续工作。
我在不同发行版的文档中听到了对这个问题截然不同的答案。Ubuntu 说“使用 .pam_environment”。我认为在 Arch 中,他们推荐的内容取决于您的外壳。目前,我将所有内容都放在.profile 中,如果由于某种原因 shell 没有提供它(例如,如果 .bash_profile 存在则为 bash),我会通过手动获取它来覆盖它。但似乎必须有更好的方法。