定義の途中で、ZSHエイリアスの後にすべてをどのように配置できますか?

定義の途中で、ZSHエイリアスの後にすべてをどのように配置できますか?

私はこのファイルを持っています:

/Users/MYUSERNAME/asciidots/asciidots/__main__.py

現在のディレクトリにあるように実行するエイリアスを指定したいと思います。私は次のことを考えています:

alias asciidots="OLDCWD=$PWD && cd /Users/MYUSERNAME/asciidots/asciidots/ && python3 __main__.py ALL_ARGUMENTS_FOLLOWING_THE_ALIAS && cd $OLDCWD"

しかし、私はこれを行う方法がわからない。

答え1

代わりに関数を使用してください。

asciidots() (
    cd /Users/MYUSERNAME/asciidots/asciidots/ &&
    python3 __main__.py "$@"
)

"$@"関数の引数に展開します。ここでは、関数本体の周囲を使用するのではなく、( .. )サブシェルで実行するようにします。{ .. }サブシェル環境には独自の作業ディレクトリがあるため、後で元のディレクトリに戻る必要はありません。

(私の記憶が正しい場合は、少なくともZshとBashで動作します。)

望むより:Bashでいつエイリアスを使用し、いつスクリプトを使用し、いつ関数を作成しますか?(タイトルはBashについて話していますが、ほとんどはZshとも関係があるかもしれません。)

関連情報