L'exécution de 'su - l'utilisateur sh -c “~ / .profile”' renvoie l'erreur “Aucun fichier de ce type”

0

J'ai un script shell qui s'exécute en tant que root avec la commande suivante:

ssh remotehost 'su - user sh -c "source /home/user/.profile; <command>"'

Je reçois la sortie suivante:

bash: su - user sh -c "source /home/user/.profile; <command>": No such file or directory.

/home/user/.profile existe définitivement sur remotehost cependant. Que se passe-t-il? Existe-t-il un autre moyen d’importer le chemin défini dans .profile?


la source
2
Est source un bashisme? Si oui, vous devriez invoquer bash au lieu de sh. Remarque : Il faut faire ". /home/user/.profile" au lieu.
Sean Bright
C'est le genre de commande qui nécessite une citation très soignée et exacte. Pouvez-vous créer une commande que vous souhaitez partager exactement telle quelle, puis l'exécuter et la publier (au lieu d'exécuter la commande de votre choix, puis de la censurer et de sa sortie avant de la publier)?
that other guy
Il traite la chaîne entière comme le nom d'une commande et non comme une commande suivie d'arguments.
Barmar
Essayez de déboguer avec -v.
ctrl-alt-delor
Plus tard, vous découvrirez que vous ne pouvez courir su d'un tty. Par conséquent, vous aurez besoin du -tt option de ssh.
ctrl-alt-delor