当我登录 GUI 时波浪号扩展不起作用



我使用的是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语法,只适用于~扩展到您自己的主目录。)

特别是,bash在这个上下文中扩展了~,但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

相关内容

  • 没有找到相关文章

最新更新