
У меня есть этот файл:
/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.)