Comment puis-je passer un alias à sudo?

38

Je l' ai essayé de mettre mes alias dans ~/.bash_profile, ~/.bashrc, /etc/profileet /etc/bashrc.

Je suis toujours incapable d'exécuter les tâches suivantes:

alias zf2="php public/index.php"

puis exécutez:

sudo zf2 orm:info

Le problème semble être que je suis incapable de spécifier un alias en tant que commande à l'aide de visudo - ce qui provoque une erreur de syntaxe.

Je suis donc incapable d'appeler:

sudo zf2 orm:info

Cependant, j'ai pu créer un script dans / usr / share / scripts / zf2 qui contient:

#!/bin/bash

alias zf2="php public/index.php"
zf2 $1

et ajoutez ce script en tant que commande dans visudo. Quand ce script est dans le chemin de l'utilisateur final, je peux exécuter

zf2 orm:info

J'ai différents alias comme ceux zf2que je dois exposer à l'utilisateur final. Je préférerais conserver un alias plutôt qu'une collection de scripts.

Michael Niño
la source
1
Malheureusement, je veux utiliser des alias dans visudo et je suis incapable.
Michael Niño
2
Ce n'est pas possible. Les alias sont gérés par le shell (dans votre cas bash) et développés avant d’être envoyés à l’application. sudolui-même ne sait rien des alias.
Steven
2
Etant donné que @Steven est techniquement correct, vous devez préciser si vous souhaitez simplement développer les alias avant de sudorecevoir la ligne ou si vous souhaitez que les alias soient développés dans l'environnement élevé. Le pédantisme n'est pas simplement un moyen de provoquer des cernes. (Wow, mais cette dernière phrase n'a pas l'air kasher du tout.)
can-ned_food
3
Double possible de Comment puis-je aliaser une commande pour sudo?
Gilles, arrête de faire le mal '21
1
Essayez avecsudo -E
Denis de Bernardy

Réponses:

66

Ironiquement, la solution consiste à appeler sudodepuis un alias.

alias sd="sudo "

Remarque: Bien que cela ne soit pas recommandé, vous pouvez nommer l’alias sudo:alias sudo="sudo "

Manuel de référence Bash (alias)

Si le dernier caractère de la valeur de l'alias est vide, le mot de commande suivant après l'alias est également vérifié pour le développement de l'alias.

Steven
la source
7
Je peux peut-être voir les raisons pour lesquelles quelqu'un voudrait et ne voudrait pas que cela soit fait par défaut pour n'importe quel système. La commodité et les attentes telles que demandées, par opposition à une plus grande prudence avec des privilèges élevés.
Pysis
5
alias sd="sudo "peut changer?
Le Nate
Après avoir examiné mes alias, j'ai remarqué que je ne l'avais pas alias sudo="sudo "dans l'environnement des utilisateurs finaux. C'est la réponse
Michael Niño