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 にも関係していると思われます。)

関連情報