Angenommen, ich habe diese beiden in meinem .zshrc
:
alias sudo='nocorrect sudo'
alias boot27='grub-reboot 4 && reboot'
boot27
gibt boot27: command not found
. Wenn ich den Alias in 'nocorrect sudo '
oder nur ändere 'sudo '
, funktioniert es, aber dann andere Dinge wie mkdir
geben nocorrect: command not found
.
Antwort1
Nur zur Klarstellung: Sie führen aus sudo boot27
und erhalten, boot27: command not found
weil es sudo
sich um einen Alias handelt, Bash die Suche nach Aliasen beendet und keinen boot27
als solchen erkennt. Wie besprochenHierEine Möglichkeit, damit umzugehen, besteht darin, am Ende der Aliasdefinition ein Leerzeichen hinzuzufügen.
Durch das Hinzufügen des Leerzeichens kann Bash es erkennen boot27
, aber das Problem besteht jetzt darin, dass Ihr Root-Konto nicht für die Verwendung von zsh eingerichtet ist, sodass sudo
stattdessen eine Bash-Shell gestartet wird. nocorrect
ist eine zsh
Sache, bash
hat keine Ahnung, was es ist, also beschwert es sich.
Die einfachste Möglichkeit, dies zu beheben, besteht darin, die Root-Shell wie folgt einzustellen /bin/zsh
:
sudo chsh
Legen Sie anschließend Ihren Alias mit dem Leerzeichen fest:
alias sudo='nocorrect sudo '
Ihr boot27
Alias hat jedoch ein anderes Problem. Ich nehme an, Sie führen es als aus sudo boot27
, die Shell liest den Alias und erweitert ihn zu:
sudo grub-reboot 4 && reboot
Es wird also grub-reboot
als Root ausgeführt, aber reboot
als normaler Benutzer. Sie können Ihren Alias ändern in
alias boot27='grub-reboot 4 && sudo reboot'
und führen Sie es als aus sudo boot27
, oder ändern Sie Ihren Alias in
alias boot27='sudo grub-reboot 4 && sudo reboot'
und führen Sie es ohne aus sudo
, einfach boot27
.