Ich kann das / etc / passwd mit augtool analysieren:
myuser=bob
usershome=`augtool -L -A --transform "Passwd incl /etc/passwd" print "/files/etc/passwd/$myuser/home" | sed -En 's/\/.* = (.*)/\1/p'`
... aber es scheint ein bisschen zu verworren.
Gibt es ein einfaches, dediziertes Tool zum Anzeigen des Benutzerhauses (wie usermod
es zum Ändern verwendet werden kann)?
bash
command-line
scripting
hosts
Adam Ryczkowski
quelle
quelle
Antworten:
Sie sollten niemals
/etc/passwd
direkt analysieren . Möglicherweise befinden Sie sich auf einem System mit Remotebenutzern. In diesem Fall befinden sie sich nicht in einem System/etc/passwd
. Die/etc/passwd
Datei befindet sich möglicherweise woanders. Usw.Wenn Sie direkten Zugriff auf die Benutzerdatenbank benötigen, verwenden Sie
getent
.Es gibt jedoch auch einen anderen Weg, bei dem keine Analyse durchgeführt wird:
Der
~
Operator in der Shell wird in das Ausgangsverzeichnis des angegebenen Benutzers erweitert. Wir müssen jedoch die verwenden,eval
da die Erweiterung der Variablen$user
nach der Erweiterung von erfolgt~
. Wenn Sie also dieeval
Anführungszeichen und doppelte Anführungszeichen verwenden, erweitern Sie effektiv$user
zuerst und rufen dann aufeval echo "~phemmer"
.Sobald Sie das Home-Verzeichnis haben, gehen Sie einfach
/.ssh
bis zum Ende.quelle
awk
Magie beinhaltet (die ich nie wirklich verstanden habe)~/.ssh
? Kann das durch eine Konfigurationseinstellung irgendwo geändert werden oder ist es fest in ssh codiert?/etc/ssh/ssh_config
und geändert werden kannsshd_config
. Zumindest auf Ubuntu 14.04Sie suchen nach $ myusers Home Dir?
Sie können verwenden
.ssh dir.
quelle