Jak mogę przekazać alias do sudo?

38

Próbowałem oddanie moje aliasy w ~/.bash_profile, ~/.bashrc, /etc/profile, i /etc/bashrc.

Nadal nie mogę wykonać następujących czynności:

alias zf2="php public/index.php"

a następnie wykonaj:

sudo zf2 orm:info

Problem polega na tym, że nie jestem w stanie podać aliasu jako polecenia za pomocą visudo - co powoduje błąd składniowy.

Nie mogę więc zadzwonić:

sudo zf2 orm:info

Udało mi się jednak utworzyć skrypt w / usr / share / scripts / zf2, który zawiera:

#!/bin/bash

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

i dodaj ten skrypt jako polecenie w visudo. Gdy ten skrypt znajduje się w ścieżce użytkownika końcowego, jestem w stanie go wykonać

zf2 orm:info

Mam różne aliasy, zf2które muszę udostępnić użytkownikowi końcowemu. Wolałbym zachować alias zamiast zbioru skryptów.

Michael Niño
źródło
1
Niestety chcę używać aliasów w visudo i nie jestem w stanie.
Michael Niño
2
Nie jest możliwe. Aliasy są obsługiwane przez powłokę (w twoim przypadku bash) i rozwijane przed wysłaniem do aplikacji. sudosam nic nie wie o aliasach.
Steven
2
Ponieważ @Steven jest technicznie poprawne, należy wyjaśnić, czy po prostu chcesz poszerzyć aliasów przed do sudopodjęcia linię, czy chcesz aliasy rozszerzony w podwyższonej środowiska. Pedanteria to nie tylko sposób na wywołanie przewracania oczami. (Wow, ale to ostatnie zdanie wcale nie wygląda na koszerne.)
can-ned_food
3
Możliwy duplikat Jak mogę uzyskać alias polecenia dla sudo?
Gilles „SO- przestań być zły”
1
Wypróbuj zsudo -E
Denis de Bernardy

Odpowiedzi:

66

Jak na ironię, rozwiązaniem jest połączenie sudoz aliasu.

alias sd="sudo "

Uwaga: Chociaż nie jest to zalecane, możesz nazwać alias sudo:alias sudo="sudo "

Podręcznik referencyjny Bash (aliasy)

Jeśli ostatni znak wartości aliasu jest pusty, to następne słowo polecenia następujące po aliasie jest również sprawdzane pod kątem rozszerzenia aliasu.

Steven
źródło
7
Mogę zobaczyć powody, dla których ktoś chciałby i nie chciałby, aby było to ustawienie domyślne dla dowolnego systemu. Wygoda i oczekiwanie zgodnie z oczekiwaniami, a nie bycie ostrożniejszym z podwyższonymi uprawnieniami.
Pysis
5
alias sd="sudo "maychance?
The Nate
Po przejrzeniu moich aliasów zauważyłem, że nie mam ich alias sudo="sudo "w środowisku użytkowników końcowych. Oto odpowiedź
Michael Niño