我在互联网上看到其他人也遇到了这个问题,但是解决方案尚无定论,所以我想再次提请大家注意。
根据 Ubuntu wiki 中的此页面: https://help.ubuntu.com/community/EnvironmentVariables 设置会话范围的环境变量的推荐方法是修改~/.pam_environment。
我的目标是:
- 我想创建一个环境变量 ANDROID_HOME,其值是指向我的主文件夹中某个位置的路径。
- 我想将两个文件夹添加到 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 中我们这样做)