Wie kann ich einen Alias ​​an sudo übergeben?

4844
Michael Niño

Ich habe meine Aliase in versucht setzen ~/.bash_profile, ~/.bashrc, /etc/profile, und /etc/bashrc.

Folgendes kann ich immer noch nicht ausführen:

alias zf2="php public/index.php" 

und dann ausführen:

sudo zf2 orm:info 

Das Problem scheint zu sein, dass ich mit visudo- kein Alias ​​als Befehl angeben kann, was einen Syntaxfehler verursacht.

Ich kann also nicht anrufen:

sudo zf2 orm:info 

Ich konnte jedoch unter / usr / share / scripts / zf2 ein Skript erstellen, das Folgendes enthält:

#!/bin/bash  alias zf2="php public/index.php" zf2 $1 

und fügen Sie dieses Skript als Befehl in visudo hinzu. Wenn sich dieses Skript im Endbenutzerpfad PATH befindet, kann ich es ausführen

zf2 orm:info 

Ich habe verschiedene Aliase zf2, die ich dem Endbenutzer zeigen muss. Ich würde es vorziehen, einen Aliasnamen anstelle einer Skriptsammlung beizubehalten.

35
Leider möchte ich Aliase in visudo verwenden und kann nicht. Michael Niño vor 6 Jahren 1
Das ist nicht möglich. Aliase werden von der Shell (in Ihrem Fall bash) verarbeitet und erweitert, bevor sie an die Anwendung gesendet werden. "sudo" selbst weiß nichts über Aliase. Steven vor 6 Jahren 2
Da @Steven technisch korrekt ist, sollten Sie abklären, ob Sie einfach die Aliase _prior_ dahingehend erweitern möchten, dass "sudo" die Zeile passiert, oder ob die Aliase in der erhöhten Umgebung erweitert werden sollen. Pedanterie ist nicht nur eine Möglichkeit, Augenrollen hervorzurufen. (Wow, aber der letzte Satz sieht überhaupt nicht koscher aus.) can-ned_food vor 6 Jahren 2
Mögliches Duplikat von [Wie kann ich einen Befehl für sudo als Alias ​​verwenden?] (Https://superuser.com/questions/192725/how-can-i-alias-a-command-for-sudo) Gilles vor 6 Jahren 3
Versuchen Sie es mit `sudo -E` Denis de Bernardy vor 6 Jahren 1

1 Antwort auf die Frage

65
Steven

Ironically, the solution is to call sudo from an alias:

alias sd="sudo " 

Note: While not recommended, you could name the alias sudo: alias sudo="sudo "

Bash Reference Manual (Aliases)

If the last character of the alias value is a blank, then the next command word following the alias is also checked for alias expansion.

Ich sehe vielleicht Gründe dafür, warum jemand dies als Standard für jedes System tun würde und würde. Die Bequemlichkeit und Erwartung, wie sie gefragt wurde, im Vergleich zu vorsichtiger mit erhöhten Privilegien. Pysis vor 6 Jahren 6
`alias sd =" sudo "` maychance? The Nate vor 6 Jahren 4
Nachdem ich meine Aliase durchgesehen hatte, bemerkte ich, dass ich in der Endbenutzerumgebung nicht `alias sudo =" sudo "` hatte. Das ist die Antwort Michael Niño vor 6 Jahren 0