Как сделать так, чтобы все, что следует за псевдонимом 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.)

Связанный контент