2012-04-07 82 views
0

我想獲取unix系統用戶的主目錄。爲什麼沒有了以下工作:bash編程STDIN重定向

# sudo su $offender -c "bash -s < <(echo echo \$HOME)" 
sh: Syntax error: redirection unexpected 
+0

爲什麼'sudo su $ offender -c'echo $ HOME''爲你工作? – cHao 2012-04-07 02:52:10

+0

我收到「意外重定向」錯誤 – 2012-04-07 02:54:58

+0

完全預期。 '<<'沒有多大意義。我問的是,爲什麼所有的貝殼體操?它似乎你不需要所有的重定向和回顯命令等... – cHao 2012-04-07 02:56:36

回答

1

它爲我在Ubuntu和Fedora使用sudo su $offender -c "echo \$HOME"

你也可以從你的/ etc/passwd文件剜像這樣:

grep "^$offender" /etc/passwd | cut -d':' -f6 
+0

有時候明顯的逃脫我。 : - / – 2012-04-07 03:13:40

0

真的不知道爲什麼它不工作,但這裏有一種方式來獲得的主目錄,不涉及產卵殼是該用戶:

getent passwd "${offender:?No Offending Account Given}" | awk -F':' 'NR==1{print $6}' 
+0

或者'sudo su $ {offender} -c'bash - c「echo $ HOME」'''或'sudo su $ {offender} -c「bash -s <<<'echo \ $ HOME'」'如果你堅持以你想獲取信息的用戶身份運行一個進程。 – Ariel 2012-04-07 02:56:22

+0

這也適用,謝謝! – 2012-04-07 03:19:33

0

直接的問題是sh不能識別進程替換(<(echo $HOME))表示法,即使它是鏈接到bash

這似乎是一個相當強大的方式來獲取信息。沒有:

eval echo ~$offender 

爲你工作?