Um den Unterschied zwischen zsh --login -c "alias"
und einer normalen Login-Shell zu testen, können/sollten Sie die Option -x
hinzufügen, um zu sehen, was die Shell vorhat.
Wenn ich zsh -x --login -c "alias"
ausführen, verarbeitet es /etc/zprofile
. Wenn ich zsh -x --login
starte, verarbeitet es /etc/zprofile
und /etc/zshrc
.
ich normalerweise nicht zsh
verwenden, so habe ich kein personalisierten Profil oder starte Datei für sie, aber es scheint plausibel, dass es aussehen könnte für (aber in meinem Fall, findet nicht) ~/.zprofile
und ~/.zshrc
auch.
Ich habe trivial Versionen dieser Dateien:
$ echo "echo in .zprofile" > ~/.zprofile
$ echo "echo in .zshrc" > ~/.zshrc
und sicher genug, sie verarbeitet sind. Ferner hat der -c
Befehl mit --login
die .zprofile
verarbeitet aber die .zshrc
Datei nicht verarbeitet.
Somit kann unter Verwendung -c "alias"
nach dem --login
unterdrückt die Verarbeitung von /etc/zshrc
und ~/.zshrc
. Wenn Sie auch nur so Hingerichteten wollen, müssen Sie etwas verwenden wie:
zsh --login -c "[ -f /etc/zshrc ] && . /etc/zshrc; [ -f ~/.zshrc ] && . ~/.zshrc; alias"
Mit -x
zu debuggen Login Verarbeitung ist oft informativ.
Es ist schön, dass moderne Shells eine Befehlszeilenoption bieten, um Login-Verarbeitung zu induzieren. Ich habe immer noch ein Programm (das ich nicht mehr benutze), das eine Login-Shell auf die altmodische Art und Weise ausführt, indem man eine vor dem Shell-Namen in argv[0]
hinzufügt. Die Ausführung von -ksh
würde also die Anmeldeverarbeitung auslösen. Das login
Programm würde die Login-Shell mit dem -
beim Start ausführen.
Beenden Sie Ihre Anmeldedateien vorzeitig (vor dem Festlegen von Aliasnamen), wenn die Shell nicht interaktiv ist. Es funktioniert möglicherweise, aber Sie legen die Aliase nicht fest, sodass Sie sie nicht verwenden können. Versuchen Sie, '-x' zur Befehlszeile hinzuzufügen (vor '-c'). –
Versucht das '-x', dasselbe Ergebnis –
Gut; es ist in sich konsistent. Hast du gesehen, dass deine Aliase gesetzt sind? Wurde '/ etc/zprofile' gelesen? Wurde eine ähnliche Datei gelesen? –