Ich möchte das Home-Verzeichnis eines Benutzers eines Unix-System zu bekommen. Warum funktioniert folgende Arbeiten:Bash Programmierung STDIN Redirect
# sudo su $offender -c "bash -s < <(echo echo \$HOME)"
sh: Syntax error: redirection unexpected
Ich möchte das Home-Verzeichnis eines Benutzers eines Unix-System zu bekommen. Warum funktioniert folgende Arbeiten:Bash Programmierung STDIN Redirect
# sudo su $offender -c "bash -s < <(echo echo \$HOME)"
sh: Syntax error: redirection unexpected
es funktioniert für mich in Ubuntu und Fedora sudo su $offender -c "echo \$HOME"
mit
Sie könnten Beitel es auch von/etc/passwd-Datei wie folgt:
grep "^$offender" /etc/passwd | cut -d':' -f6
Manchmal entgeht mir das Offensichtliche. : - / –
Sie wissen nicht wirklich, warum es nicht funktioniert, aber hier ist ein Weg, um das Home-Verzeichnis zu erhalten, ist nicht mit einer Schale als dieser Benutzer Laichen:
getent passwd "${offender:?No Offending Account Given}" | awk -F':' 'NR==1{print $6}'
Oder mach 'sudo su $ {tender} -c' bash - c "echo $ HOME" 'oder 'sudo su $ {tender} -c" bash -s <<<' echo \ $ HOME '"' wenn Sie darauf bestehen, einen Prozess als den Benutzer auszuführen, für den Sie Informationen erhalten möchten . – Ariel
das funktioniert auch, danke !!! –
Das direkte Problem ist, dass sh
Prozesssubstitution nicht erkennt (die <(echo $HOME)
) Notation, auch wenn es eine Verbindung zu bash
ist.
Es scheint wie ein ziemlich brutaler Weg, um die Informationen zu erhalten. Nicht:
eval echo ~$offender
arbeiten für Sie?
Warum funktioniert 'sudo su $ tender -c 'echo $ HOME'' nicht für Sie? – cHao
Ich bekomme einen Fehler "Umleitung unerwartet" –
Voll erwartet. '<<' macht nicht viel Sinn. Was ich frage ist, warum all die Muschelgymnastik? Es scheint, dass Sie nicht alle Umleitungs- und Echobefehle brauchen und so ... – cHao