Come posso passare un alias a sudo?


38

Ho provato a mettere i miei alias in ~/.bash_profile, ~/.bashrc, /etc/profile, e /etc/bashrc.

Non riesco ancora a eseguire quanto segue:

alias zf2="php public/index.php"

e quindi eseguire:

sudo zf2 orm:info

Il problema sembra essere che non riesco a specificare un alias come comando usando visudo, che causa un errore di sintassi.

Quindi non riesco a chiamare:

sudo zf2 orm:info

Tuttavia, sono stato in grado di creare uno script in / usr / share / scripts / zf2 che contiene:

#!/bin/bash

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

e aggiungi questo script come comando in visudo. Quando questo script è nel PERCORSO dell'utente finale sono in grado di eseguire

zf2 orm:info

Ho diversi alias come zf2quello che devo esporre all'utente finale. Preferirei mantenere un alias anziché una raccolta di script.


1
Purtroppo voglio usare gli alias in visudo e non sono in grado.
Michael Niño,

2
Non è possibile. Gli alias sono gestiti dalla shell (nel tuo caso bash) ed espansi prima di essere inviati all'applicazione. sudodi per sé non sa nulla degli alias.
Steven,

2
Poiché @Steven è tecnicamente corretto, è necessario chiarire se si desidera semplicemente espandere gli alias prima di sudopassare la linea o se si desidera che gli alias vengano espansi nell'ambiente elevato. La pedanteria non è semplicemente un modo per suscitare un bagliore agli occhi. (Caspita, ma quest'ultima frase non sembra affatto kosher.)
can-ned_food


1
Provalo consudo -E
Denis de Bernardy il

Risposte:


66

Ironia della sorte, la soluzione è chiamare sudoda un alias.

alias sd="sudo "

Nota: sebbene non sia raccomandato, è possibile assegnare un nome all'alias sudo:alias sudo="sudo "

Manuale di riferimento di Bash (alias)

Se l'ultimo carattere del valore alias è vuoto, anche la parola di comando successiva che segue l'alias viene verificata per l'espansione dell'alias.


7
Posso forse vedere i motivi per cui qualcuno dovrebbe e non vorrebbe che questo fosse fatto come predefinito per qualsiasi sistema. La convenienza e le aspettative come richiesto, rispetto a essere più attenti con privilegi elevati.
Pysis,

5
alias sd="sudo "maychance?
The Nate,

Dopo aver esaminato i miei alias ho notato che non avevo alias sudo="sudo "nell'ambiente degli utenti finali. Questa è la risposta
Michael Niño,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.