
Ich habe diese Datei:
/Users/MYUSERNAME/asciidots/asciidots/__main__.py
Ich möchte dies mit einem Alias versehen, damit es so ausgeführt wird, als ob es sich in meinem aktuellen Verzeichnis befände. Ich dachte dabei an so etwas:
alias asciidots="OLDCWD=$PWD && cd /Users/MYUSERNAME/asciidots/asciidots/ && python3 __main__.py ALL_ARGUMENTS_FOLLOWING_THE_ALIAS && cd $OLDCWD"
aber ich kenne keine Möglichkeit, das zu tun.
Antwort1
Verwenden Sie stattdessen eine Funktion:
asciidots() (
cd /Users/MYUSERNAME/asciidots/asciidots/ &&
python3 __main__.py "$@"
)
"$@"
erweitert sich zu den Argumenten der Funktion, und hier habe ich ( .. )
anstelle von { .. }
um den Funktionskörper herum verwendet, um es in einer Subshell laufen zu lassen. Die Subshell-Umgebung hat ein eigenes Arbeitsverzeichnis, sodass ein anschließender Rücksprung in das ursprüngliche Verzeichnis nicht erforderlich ist.
(Das sollte zumindest in Zsh und Bash funktionieren, wenn ich mich nicht irre.)
Sehen:Wann sollte in Bash ein Alias verwendet werden, wann ein Skript und wann eine Funktion geschrieben werden?(im Titel steht Bash, aber das meiste davon ist wahrscheinlich auch für Zsh relevant.)