bash编程STDIN重定向

时间:2012-04-07 02:46:56

标签: bash

我想获取unix系统用户的主目录。为什么没有以下工作:

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

3 个答案:

答案 0 :(得分:1)

使用sudo su $offender -c "echo \$HOME"

在Ubuntu和Fedora中对我有用

您也可以从/ etc / passwd文件中凿出它,如下所示:

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

答案 1 :(得分:0)

不知道为什么它不起作用,但是这里有一种方法可以获得不涉及以该用户形式生成shell的主目录:

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

答案 2 :(得分:0)

直接问题是sh无法识别流程替换(<(echo $HOME))表示法,即使它是指向bash的链接。

这似乎是获取信息的一种相当蛮力的方式。不:

eval echo ~$offender

为你工作?