1

特定のパスに既存の実行可能ファイルがある場合にのみ、プログラムにエイリアスを設定しようとしています。これまで、すべてのスクリプトでパスとエイリアスに二重引用符を使用してきましたが、スペースを含むパスで二重引用符を使用すると問題が発生しました。

たとえば、次のように変数を設定しました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') で設定すると、テストとエイリアスの両方が機能します。何故ですか?

4

1 に答える 1

4

使用する:

alias subl="$PATH_TO_SUBL"

そうしないと、エイリアス コマンドは次のように解析されます。

alias suble=/some/thing else/here

適切なエイリアス定義を作成しません。

(条件付きで引用符がなくても機能します。これは、シェルが動作するためのルールを使用して直接処理するためです。実際に条件付きで使用すると機能し[[ ... ]]ません。)test[ ... ]

于 2012-12-21T18:40:11.573 に答える