如何设置会话范围的环境变量和 PATH?

如何设置会话范围的环境变量和 PATH?

我在互联网上看到其他人也遇到了这个问题,但是解决方案尚无定论,所以我想再次提请大家注意。

根据 Ubuntu wiki 中的此页面: https://help.ubuntu.com/community/EnvironmentVariables 设置会话范围的环境变量的推荐方法是修改~/.pam_environment。

我的目标是:

  1. 我想创建一个环境变量 ANDROID_HOME,其值是指向我的主文件夹中某个位置的路径。
  2. 我想将两个文件夹添加到 PATH。

这是我所做的。~/.pam_environment 文件不存在,因此我创建了它并在其中添加了以下几行:

ANDROID_HOME=${HOME}/Android/Sdk
PATH DEFAULT=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools

已退出并重新登录。

结果不是预期的。我打开终端并回显 $ANDROID_HOME,结果如下:

${HOME}/Android/Sdk

看起来${HOME}没有用我的主文件夹路径替换。为什么会这样?

观察cd$ANDROID_HOME (Android/Sdk 实际上存在于我的主文件夹中):

anvar@crazymachine:~$ cd $ANDROID_HOME
bash: cd: ${HOME}/Android/Sdk: No such file or directory

另外回应 $PATH 给了我这个:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:${HOME}/Android/Sdk/tools:${HOME}/Android/Sdk/platform-tools

为什么变量没有像逻辑上假设的那样被它们的值替换,特别是当上述网站中的例子给人一种印象即变量可以在值中使用时?

设置 GUI 程序也可以访问的会话范围的环境变量的正确方法是什么?

答案1

中的示例维基百科,用于通过 设置会话变量~/.pam_environment,在注释中指出:

修改 PATH 所使用的语法与脚本文件的语法不同,但变量扩展必须能够正常工作。

因此你的第一行应该是这样的:

ANDROID_HOME DEFAULT=${HOME}/Android/Sdk

答案2

两个建议:

第一,您的环境声明的形式应为:

ANDROID_HOME=$HOME/Android/Sdk
PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

第二,将新的环境语句放入~/.profile

答案3

我认为您可能需要export HOME在设置路径变量后(在 ~/.bashrc 中我们这样做)

相关内容