Come posso eseguire i comandi come un altro utente con il loro .bash_profile anziché l'utente corrente?
-
29-10-2019 - |
Domanda
Voglio eseguire un comando come utente non root in uno script di avvio (RC.LOCAL). Il comando che voglio eseguire è in realtà un alias nell'utente non root .bash_profile. Ho provato a usare
su - myuser -c aliased_cmd
Ma questo non funziona. Se sono semplicemente digitato
su - myuser
# wait for login...
aliased_cmd
Funziona bene, ma ovviamente questo non è appropriato nello script reale. Naturalmente potrei copiare gli alias e le funzioni che vorrei usare nel file RC.local reale, ma questo sembra un po 'sciocco ... forse c'è un'opzione che non conosco o un modo per usare sudo per questo?
Soluzione
Dopo aver approvato il profilo, includi quanto segue
shopt -s expand_aliases
Altri suggerimenti
Citando man su
:
Quando viene utilizzato, deve essere specificato come ultima opzione SU.
Non specifica cosa succede se non è l'ultima opzione. Inoltre, nella sinossi il nome utente è dopo tutte le opzioni.
Hai provato su -c aliased_cmd - myuser
o su -l -c aliased_cmd myuser
?