根据这篇文章,我从命令行运行:
USER_HOME=$(getent passwd $SUDO_USER | cut -d: -f6)
并获得以下输出:
/root /usr/sbin /bin /dev /bin /usr/games /var/cache/man /var/spool/lpd /var/mail /var/spool/news /var/spool/uucp /bin /var/www /var/backups /var/list /var/run/ircd /var/lib/gnats /nonexistent /var/lib/libuuid /home/user /var/run/vboxadd /var/lib/puppet /var/run/sshd
当我在脚本中运行它时(因为sudo
,这是整个事情的重点 - 作为sudo,~
扩展为/root
):
USER_HOME=$(getent passwd $SUDO_USER | cut -d: -f6) echo $USER_HOME
我得到了正确的道路/home/user
.
为什么我不能手动调用我的函数来获得相同的输出?
因为当不使用时sudo
,$SUDO_USER
未设置并且您获得getent passwd
没有进一步参数的输出,其中列出了所有用户.在cut
随后提取的主目录的一部分.
更换$SUDO_USER
用$USER
时不运行sudo
.
请注意,getent passwd ${SUDO_USER:-$USER}
在两种情况下都应该使用.