2013-01-15 18 views
11

Ho un semplice script di shell che viene eseguito con sudo come la maggior parte dello script richiede, tuttavia uno dei comandi nello script è un'installazione Homebrew, che non può essere eseguita con sudo.Esegui un singolo comando nello script di shell senza sudo

Quindi, la mia domanda è quando si esegue uno script di shell con sudo, come si eseguono i comandi secondari come utente corrente e quindi si continua il resto dello script con sudo.

Chiedere all'utente di immettere nuovamente la password non è molto pratico in quanto lo script richiede molto tempo per essere eseguito e richiede 5-10 minuti di attesa per il prompt.

risposta

12

Il modo più semplice è eseguire il sottocomando tramite sudo all'interno dello script. L'ID utente per eseguire con può essere ottenuto $ SUDO_USER (guardare l'output di sudo env):

sudo -u $SUDO_USER ./exec_as_normal_user.sh 
+0

Grazie. Esattamente quello di cui avevo bisogno! – RayViljoen

+0

C'è un modo per farlo senza la necessità di un altro file di script bash? AWS consente solo un file come allegato quando si avvia un server –

0

un'istanza della shell, usando

sudo -u $USER_NAME bash

ed eseguire lo script di shell chiamando,

./program.sh

Problemi correlati