12

pwdファイルにaliasを入れる方法はあり.zshrcますか?私は次のようなことをしようとしています:

alias cleanup="rm -Rf `pwd`/{foo,bar,baz}"

これはbashでうまく機能しました。pwdは常に私が入ったディレクトリですがcd、zshでは、.zshrcファイルが最初にロードされたときに評価され、常にホームディレクトリのままであるように見えます。alias非常に簡単なセットアップで使用してテストしましたが、変更されることはありません。

aliasサブディレクトリからを呼び出すと常にそのサブディレクトリとして評価されるように、この変更を行うにはどうすればよいですか?

編集:これが役立つかどうかはわかりませんが、私はMacでoh-my-zshを介してzshを使用しています。

4

1 に答える 1

36

.zshrcがロードされると、aliasコマンドが評価されます。aliasコマンドは、コマンド名 (組み込みの) と、 を展開した結果である 1 つの引数の 2 つの単語で構成されますcleanup="rm -Rf `pwd`/{foo,bar,baz}"。逆引用符は二重引用符の間で補間されるため、この引数はcleanup=rm -Rf /home/unpluggd/{foo,bar,baz}(単一のシェル ワードです) に展開されます。場所/home/unpluggdはその時点での現在のディレクトリです。

コマンドの定義時に補間を避けたい場合は、代わりに単一引用符を使用してください。これは、ほとんどの場合、エイリアスに必要なものです。

alias cleanup='rm -Rf `pwd`/{foo,bar,baz}'

ただし、これは不必要に複雑です。`pwd/`ファイル名の前に必要はありません! 書くだけ

alias cleanup='rm -Rf -- {foo,bar,baz}'

( のオプションとして解析されるのを避けるために、 で始まる可能性が--ある場合に必要です)。これは、中かっこが不要になったため簡略化できます。foo-rm

alias cleanup='rm -Rf -- foo bar baz'
于 2011-04-06T21:55:21.903 に答える