web-dev-qa-db-ja.com

変数はどのようにcd'ingに「〜」を使用できますか?

変数を使用するにはどうすればよいですか-$BASE私のCDで。次のことを試しましたが、エラーが発生します

$ 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 
13
Michael Durrant

cd ~/z/では、 チルダ拡張 を使用して~をホームディレクトリに展開しています。 BASE="~/z"では、~文字を引用したためではないため、展開されません。そのため、~ディレクトリが存在しないことを訴えるメッセージが表示されます。解決策は、拡張を発生させるために、引用しないことです。つまり、BASE=~/zです。

25
jw013

@ jw013は有効な説明と解決策を提供しています。

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

11
Ruslan