Wie verwende ich sudo mit Alias ​​in zsh?

Wie verwende ich sudo mit Alias ​​in zsh?

Angenommen, ich habe diese beiden in meinem .zshrc:

alias sudo='nocorrect sudo'
alias boot27='grub-reboot 4 && reboot'

boot27gibt boot27: command not found. Wenn ich den Alias ​​in 'nocorrect sudo 'oder nur ändere 'sudo ', funktioniert es, aber dann andere Dinge wie mkdirgeben nocorrect: command not found.

Antwort1

Nur zur Klarstellung: Sie führen aus sudo boot27und erhalten, boot27: command not foundweil es sudosich um einen Alias ​​handelt, Bash die Suche nach Aliasen beendet und keinen boot27als 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 sudostattdessen eine Bash-Shell gestartet wird. nocorrectist eine zshSache, bashhat 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 boot27Alias ​​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-rebootals Root ausgeführt, aber rebootals 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.

verwandte Informationen