2017-08-03 1 views
0

Alors quePourquoi la commande de connexion n'accepte-t-elle pas stdin?

echo pwd | bash -i 

fonctionne

echo pwd | login -f root 

ne fonctionne pas. Je m'attendais à la commande de connexion pour définir certaines variables d'environnement et démarrer un shell interactif, mais apparemment, il est en quelque sorte spécial.

Que fait la commande login pour que l'exemple ci-dessus ne fonctionne pas? Et existe-t-il des alternatives à la commande de connexion qui peuvent être utilisées de cette manière?

Répondre

0

La commande de connexion vérifie si elle est connectée à un terminal avant de commencer. Vous pouvez simuler un TTY avec la commande de script répond ici https://stackoverflow.com/a/1402389/3235192

echo pwd | script -qc "login -f root" /dev/null 

travaille également avec heredoc.

script -qc "login -f root" /dev/null << EOF 
pwd 
EOF