我使用的是Ubuntu 11.10,我遇到了一个奇怪的问题。
在我的.profile文件中有一些导出:
出口ANDROID_SDK_ROOT = ~/workspace/android-sdk-linux_x86
出口ANDROID_NDK_ROOT = ~/workspace/android-ndk-r7
等等…
然而,当我登录到GUI,打开我的终端并执行echo $ANDROID_SDK_ROOT时,它显示的是~/workspace/android-sdk-linux_x86而不是/home/brian/workspace/android-sdk-linux_x86。
因为它显示~/workspace/android-sdk-linux_x86,似乎在登录GUI时读取.profile,但我不确定为什么不展开。
如果我运行"。~/。在终端中查看$ANDROID_SDK_ROOT,显示/home/brian/workspace/android-sdk-linux_x86即可。这很奇怪,我不知道为什么。
如果我登录到CUI(命令用户界面),当我执行echo $ANDROID_SDK_ROOT时,它会打印/home/brian/workspace/android-sdk-linux_x86。所以问题只发生在我登录GUI时。
有人知道发生了什么事吗?我的主目录中没有。bash_profile(我在某处读到,如果我有。bash_profile,则不会读取。profile,因此我确保。bash_profile不存在;我很确定。profile被读取,因为当我echo $ANDROID_SDK_ROOT时,它打印了~/workspace/android-sdk-linux_x86)。如果你知道我可能做错了什么,请指教。
谢谢!
在某些情况下(取决于shell), ~
可能只在单词的开头展开。您可以通过使用$HOME
来解决这个问题:
export ANDROID_SDK_ROOT=$HOME/workspace/android-sdk-linux_x86
export ANDROID_NDK_ROOT=$HOME/workspace/android-ndk-r7
(注意,这不适用于~username
语法,只适用于~
扩展到您自己的主目录。)
~
,但dash
没有。在Ubuntu上,/bin/sh
是指向dash
的符号链接;/bin/sh
是默认用于许多非交互式活动的shell。
使用export的波浪展开是shell依赖的(因为一些shell不将export命令中的赋值限定为shell变量赋值)。因此,最好将其重写为:
ANDROID_SDK_ROOT=~/workspace/android-sdk-linux_x86
export ANDROID_SDK_ROOT
ANDROID_NDK_ROOT=~/workspace/android-ndk-r7
export ANDROID_NDK_ROOT