在谷歌云上的 bash 中获取正确的 $HOME 目录
Posted
技术标签:
【中文标题】在谷歌云上的 bash 中获取正确的 $HOME 目录【英文标题】:Getting correct $HOME directory in bash on google cloud 【发布时间】:2017-08-17 07:44:41 【问题描述】:我的 bash 脚本有以下代码,我在谷歌云计算引擎上执行了它。
mv $HOME/open***-2.4.0/ /etc/open***
这里的问题是$HOME
被扩展为/root
而不是/home/myusername
。
echo $HOME
在命令提示符下按预期给出/home/myusername
。
我在这里做错了什么?
编辑 1
如果我使用 sudo 执行 bash 脚本,$HOME
变量会给出 /root
,但是当我在没有 sudo 的情况下执行脚本时,$HOME 变量会像谷歌云上的预期那样给出/home/myusername
【问题讨论】:
【参考方案1】:我使用 $SUDO_USER 找到主目录
HOME=$(getent passwd $SUDO_USER | cut -d: -f6)
【讨论】:
【参考方案2】:当您使用 sudo 运行 bash 脚本时,它以 root 用户身份运行脚本,因此 $HOME 变量给出 /root。
一种选择是将 $HOME 环境变量作为命令行选项传递给您的 bash 脚本。然后,您可以在 bash 脚本中以 $1 的形式访问此变量的值。
【讨论】:
以上是关于在谷歌云上的 bash 中获取正确的 $HOME 目录的主要内容,如果未能解决你的问题,请参考以下文章
TPU V3全新NLP类AutoML产品,这是李飞飞在谷歌云大会上的新声音