程序的环境变量取决于它是从终端启动还是从桌面启动(通过单击其图标)。
例如:我使用 bash,并在 .bashrc 中设置了特定变量以用于开发目的。当我从命令行启动我选择的编辑器(Sublime Text,但对于任何程序都是如此)时,一切都运行正常。当我从桌面(在本例中为 gnome 3)启动它时,变量丢失了。
所以我的问题是:定义桌面和终端都遵守的变量的正确方法是什么?
答案1
中的变量.bashrc
仅由 shell 设置bash
,如果变量被export
设置,shell 会将变量及其值存储在其环境中,并将此环境的副本传递给它启动的任何进程。sublime text
从桌面启动不会调用bash
读取。您可以通过在文件中定义(和设置).bashrc
变量来全局设置变量(您必须创建)。如果您在多用户系统上,您可以用 包围定义,以便其他人(如果这是一个非空集)不会受到您的定义的影响。查看中的其他脚本以获取提示。 export
user.sh
/etc/profile.d
/etc/profile.d/user.sh
if [[ "$USER" = "me" ]] ; then ... fi
/etc/profile.d
要查看进程关系和环境继承,可以
pstree -a -c -l -p -u 1
而且当然,man pstree
。