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


13

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

$ 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 

回答:


25

cd ~/z/ご使用しているチルダ展開を拡大するために~自分のホームディレクトリに。ではBASE="~/z"~文字を引用したからではなく、展開されません。そのため、存在しない~ディレクトリについて不平を言うメッセージが表示されます。解決策は、引用符を付けないことです。つまりBASE=~/z、展開を発生させるためです。


11

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

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


5
それはそれを行う1つの方法ですが、必要ではありません。が引用さBASE=~/"quoted name"れていない限り、問題なく動作し~ます。
hvd 14年

4
@hvd:実際には、スラッシュも引用符で囲まないでおく必要があります。BASE=~/"quoted name"動作しますが、BASE=~"/quoted name"動作しません。
ゴードンデイヴィソン14年

あなたが正しい。良いキャッチ。
hvd 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.