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

38

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- keinen Alias ​​als Befehl angeben kann, der einen Syntaxfehler verursacht.

Ich kann also nicht anrufen:

sudo zf2 orm:info

Ich konnte jedoch ein Skript unter / usr / share / scripts / zf2 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 PATH des Endbenutzers befindet, kann ich es ausführen

zf2 orm:info

Ich habe verschiedene Aliase zf2, die ich dem Endbenutzer zur Verfügung stellen muss. Ich würde lieber einen Alias ​​als eine Sammlung von Skripten pflegen.

Michael Niño
quelle
1
Leider möchte ich in visudo Aliase verwenden und kann das nicht.
Michael Niño
2
Das ist nicht möglich. Aliase werden von der Shell verarbeitet (in Ihrem Fall bash) und erweitert, bevor sie an die Anwendung gesendet werden. sudoselbst weiß nichts über Aliase.
Steven
2
Da @ Steven technisch korrekt ist, sollten Sie klären , ob Sie einfach Aliase erweitern möchten , bevor an sudodie Leitung übergeben wird, oder ob Sie die Aliase expandiert in der erhöhten Umgebung wollen. Pedanterie ist nicht nur ein Weg, um Augenrollen hervorzurufen. (Wow, aber der letzte Satz sieht überhaupt nicht koscher aus.)
can-ned_food
3
Mögliches Duplikat von Wie kann ich einen Befehl für sudo aliasen?
Gilles 'SO - hör auf böse zu sein'
1
Versuchen Sie es mitsudo -E
Denis de Bernardy

Antworten:

66

Ironischerweise besteht die Lösung darin, sudovon einem Alias anzurufen .

alias sd="sudo "

Hinweis: Obwohl nicht empfohlen, können Sie den Alias ​​benennen sudo:alias sudo="sudo "

Bash-Referenzhandbuch (Aliase)

Wenn das letzte Zeichen des Alias-Werts leer ist, wird auch das nächste Befehlswort nach dem Alias ​​auf Alias-Erweiterung überprüft.

Steven
quelle
7
Ich kann vielleicht Gründe sehen, warum jemand dies als Standard für jedes System tun würde und nicht wollen würde. Die Bequemlichkeit und Erwartung, wie sie verlangt werden, im Gegensatz zu der Vorsicht mit erhöhten Privilegien.
Pysis
5
alias sd="sudo "vielleicht?
Der Nate
Nachdem ich meine Aliase überprüft hatte, stellte ich fest, dass ich keine alias sudo="sudo "in der Endbenutzerumgebung hatte. Dies ist die Antwort
Michael Niño