为什么从shell脚本执行时输出会有所不同?

 DZ2017 发布于 2023-02-04 13:45

根据这篇文章,我从命令行运行:

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.

为什么我不能手动调用我的函数来获得相同的输出?

1 个回答
  • 因为当不使用时sudo,$SUDO_USER未设置并且您获得getent passwd没有进一步参数的输出,其中列出了所有用户.在cut随后提取的主目录的一部分.

    更换$SUDO_USER$USER时不运行sudo.

    请注意,getent passwd ${SUDO_USER:-$USER}在两种情况下都应该使用.

    2023-02-04 13:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有