在谷歌云上的 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 目录的主要内容,如果未能解决你的问题,请参考以下文章

在谷歌云上创建集群

使用我的电脑中的火车和评估文件在谷歌云中训练神经网络

如何以编程方式在谷歌云运行 api 中获取当前项目 ID

TPU V3全新NLP类AutoML产品,这是李飞飞在谷歌云大会上的新声音

TPU V3全新NLP类AutoML产品,这是李飞飞在谷歌云大会上的新声音

在 android 中获取意外的响应代码 403,同时在谷歌云控制台中将 API 密钥限制为 Android 应用程序