「~」を使って変数をcd'ingするには?

「~」を使って変数をcd'ingするには?

私のcd.txtで変数をどのように$BASE使用できますか?以下を試しましたが、エラーが発生しました。

$ cd ~/z/repo_1_ruby_193/
23:23:57 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ BASE="~/z"
23:24:03 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

$ cd $BASE/repo_1_ruby_193
-bash: cd: ~/z/repo_1_ruby_193: No such file or directory
23:24:25 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 

答え1

cd ~/z/使用前にチルダ拡張~ホームディレクトリに展開します。では文字BASE="~/z"を引用したため~拡張されませんでした。これが~ディレクトリが存在しないというメッセージを受け取る理由です。解決策はこれを参照しないことです。つまり、BASE=~/z拡張が発生するようにするためです。

答え2

@jw013 が有効な説明と解決策を提示しました。

ただし、パスにスペースや特殊記号が複数含まれている場合など、パスを引用したい場合があります。この場合、$HOME代わりに使用する必要があります~。つまり、チルダ拡張とは異なり、パラメータ置換が二重引用符として解釈されるため、BASE="~/z"正しくBASE="$HOME/z"機能します。

関連情報