我正在使用Ubuntu 11.10而且我遇到了一个奇怪的问题。
我的.profile文件中有一些导出:
export ANDROID_SDK_ROOT =〜/ workspace / android-sdk-linux_x86
export ANDROID_NDK_ROOT =〜/ workspace / android-ndk-r7
等...
然而,当我登录到GUI时,打开我的终端并回显$ ANDROID_SDK_ROOT,它显示〜/ workspace / android-sdk-linux_x86而不是/home/brian/workspace/android-sdk-linux_x86.
因为它显示了〜/ workspace / android-sdk-linux_x86,所以在登录GUI时似乎会读取.profile,但我不确定为什么代字号没有扩展。
如果我在终端中运行“.~ / .profile”并检查echo $ ANDROID_SDK_ROOT,它会显示/ home / brian / workspace / android-sdk-linux_x86。这很奇怪,我不知道为什么。
如果我登录CUI(命令用户界面),当我回显$ ANDROID_SDK_ROOT时,它按预期打印/ home / brian / workspace / android-sdk-linux_x86。所以问题只发生在我登录GUI时。
有没有人知道发生了什么?我在我的主目录中没有.bash_profile(我在某处读到如果我有.bash_profile,.profile没有被读取,所以我确定.bash_profile不存在;我很确定.profile被读取因为它打印〜/ workspace / android-sdk-linux_x86当我回复$ ANDROID_SDK_ROOT时)。如果你知道我可能做错了什么,请说清楚。
谢谢!
答案 0 :(得分:2)
在某些情况下(取决于shell),~
可能只在单词的开头展开。您可以使用$HOME
来解决此问题:
export ANDROID_SDK_ROOT=$HOME/workspace/android-sdk-linux_x86
export ANDROID_NDK_ROOT=$HOME/workspace/android-ndk-r7
(请注意,这不仅适用于~username
语法,只是~
扩展到您自己的主目录。)
特别是,bash确实会在此上下文中展开~
,但dash
不会。在Ubuntu上,/bin/sh
是dash
的符号链接; /bin/sh
是默认用于许多非交互活动的shell。
答案 1 :(得分:1)
使用带有 export 的代字号扩展是依赖于shell的(因为某些shell不会将导出命令中的赋值限定为 shell变量赋值)。因此,最好将其重写为:
ANDROID_SDK_ROOT=~/workspace/android-sdk-linux_x86
export ANDROID_SDK_ROOT
ANDROID_NDK_ROOT=~/workspace/android-ndk-r7
export ANDROID_NDK_ROOT