Comment puis-je exécuter des commandes en tant qu'autre utilisateur avec leur .bash_profile au lieu de l'utilisateur actuel?
-
29-10-2019 - |
Question
Je souhaite exécuter une commande en tant qu'utilisateur non root dans un script de démarrage (rc.local).La commande que je veux exécuter est en fait un alias dans le .bash_profile de l'utilisateur non root.J'ai essayé d'utiliser
su - myuser -c aliased_cmd
mais cela ne fonctionne pas.Si je tape simplement
su - myuser
# wait for login...
aliased_cmd
cela fonctionne bien, mais évidemment ce n'est pas approprié dans le script actuel.Bien sûr, je pourrais copier les alias et les fonctions que j'aimerais utiliser dans le fichier rc.local, mais cela semble un peu idiot ... peut-être qu'il y a une option que je ne connais pas ou un moyen d'utiliser sudo pourça?
La solution
après avoir recherché le profil, incluez les éléments suivants
shopt -s expand_aliases
Autres conseils
Citant man su
:
Lorsque - est utilisé, il doit être spécifié comme dernière option su.
Il ne spécifie pas ce qui se passe si ce n'est pas la dernière option.De plus, dans le synopsis, le nom d'utilisateur est après toutes les options.
Avez-vous essayé su -c aliased_cmd - myuser
ou su -l -c aliased_cmd myuser
?