2

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 をエコーすると、/home/brian/workspace/android-sdk-linux_x86 ではなく ~/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 (コマンド ユーザー インターフェイス) にログインし、echo $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 をエコーし​​たとき)。私が間違ったことを知っている場合は、光を当ててください。

ありがとう!

4

2 に答える 2

2

場合によっては (シェルによっては)、~単語の先頭でのみ展開されることがあります。$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多くの非インタラクティブなアクティビティにデフォルトで使用されるシェルです。

于 2011-12-09T05:33:50.197 に答える
1

チルダ展開をエクスポートで使用することは、シェルに依存します(一部のシェルは、エクスポートコマンドでの割り当てをシェル変数の割り当てとして修飾しないため)。したがって、次のように書き直すことをお勧めします。

ANDROID_SDK_ROOT=~/workspace/android-sdk-linux_x86
export ANDROID_SDK_ROOT
ANDROID_NDK_ROOT=~/workspace/android-ndk-r7
export ANDROID_NDK_ROOT
于 2011-12-09T06:56:36.083 に答える