UNIX システムのユーザーのホーム ディレクトリを取得したいと考えています。以下が機能しないのはなぜですか:
# sudo su $offender -c "bash -s < <(echo echo \$HOME)"
sh: Syntax error: redirection unexpected
UNIX システムのユーザーのホーム ディレクトリを取得したいと考えています。以下が機能しないのはなぜですか:
# sudo su $offender -c "bash -s < <(echo echo \$HOME)"
sh: Syntax error: redirection unexpected
UbuntuとFedoraで私のために動作しますsudo su $offender -c "echo \$HOME"
次のように /etc/passwd ファイルから掘り下げることもできます。
grep "^$offender" /etc/passwd | cut -d':' -f6
直接的な問題は、それがへのリンクであっても、sh
プロセス置換()表記を認識しないことです。<(echo $HOME)
bash
情報を取得するためのかなり野蛮な方法のようです。しません:
eval echo ~$offender
あなたのために働きますか?
うまくいかない理由はよくわかりませんが、そのユーザーとしてシェルを生成する必要のないホーム ディレクトリを取得する方法を次に示します。
getent passwd "${offender:?No Offending Account Given}" | awk -F':' 'NR==1{print $6}'