特定のパスに既存の実行可能ファイルがある場合にのみ、プログラムにエイリアスを設定しようとしています。これまで、すべてのスクリプトでパスとエイリアスに二重引用符を使用してきましたが、スペースを含むパスで二重引用符を使用すると問題が発生しました。
たとえば、次のように変数を設定しましたPATH_TO_SUBL="/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"
。テスト ( [[ -x $PATH_TO_SUBL ]]
) は機能しますが、エイリアスで使用すると機能しません (alias subl=$PATH_TO_SUBL
結果として、bash は/Applications/Sublime: No such file or directoryを返します)。
一重引用符とエスケープスペース ( PATH_TO_SUBL='/Applications/Sublime\ Text\ 2.app/Contents/SharedSupport/bin/subl'
) で設定すると、テストとエイリアスの両方が機能します。何故ですか?