エイリアスを定義してすぐに使用してください。

エイリアスを定義してすぐに使用してください。

これはzshうまくいきます:

alias foo=ls
foo

しかし、次はそうではありません。

alias foo=ls; foo

インタラクティブに実行するときにEnterキーを押すと、追加時間が発生することは問題になりません。しかし、実行中にssh突然問題が発生しました。

% ssh zsh@server 'alias foo=ls; foo'
zsh:1: command not found: foo

改行文字を使用しても機能しません。

% ssh zsh@server 'alias foo=ls;
foo'
zsh:2: command not found: foo

奇妙なことに、zsh別名であることを知っています。

% ssh zsh@server 'alias foo=ls; alias'
foo=ls
run-help=man
which-command=whence

zshエイリアスを有効にする必要があるかどうかはどうすればわかりますか?

ベストアンサー1

これはよく知られている問題であり、zshマニュアルの「Alias」の章にも記載されています(参考資料を参照man zshmisc)。これを処理するための推奨される方法は、エイリアスの代わりに関数を使用することです。

foo() { ls; } ; foo

または、次の場合にはより良いですls

foo() { ls -- "${@:-.}"; } ; foo

PS。関数定義(リスト)の末尾にあるセミコロンとスペースはzshでは必要ありませんが、他のシェルではまだ習慣的に使用されます。

おすすめ記事