2012-04-07 11 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

+0

"リダイレクトの予期しない"エラーが発生する –

+0

完全に予想されます。 '<<'はあまり意味がありません。私は何を求めているのです、なぜすべてのシェルの体操ですか?それはあなたがすべてのリダイレクトとエコーコマンドなどを必要としないようだね... – cHao

答えて

1

またそうのようなあなたの/ etc/passwdファイルからそれをえぐることができます:

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

ときどき明らかに私を逃れる。 : - / –

0

は本当に分からないのですが、ここでそのユーザとしてシェルを産卵関与していないホームディレクトリを取得する方法です:

それは、UbuntuとFedoraは sudo su $offender -c "echo \$HOME"

を使用して私の作品

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

'sudo su $ {offender} -c 'bash - あなたが情報を取得したいユーザとしてプロセスを実行することを主張するならば、 "echo $ HOME" ''、' sudo su $ {offender} -c "bash -s <<<' echo¥$ HOME ' 。 – Ariel

+0

これも動作します、ありがとう! –

0

直接の問題は、がbashへのリンクであっても、プロセス置換(<(echo $HOME))表記法を認識しないということです。

情報を取得するのはむしろ強硬な方法のようです。しない:

eval echo ~$offender 

あなたのために働く?

関連する問題