Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是什么导致bash将~解释为一个按字面命名的目录~&引用;? 出身背景_Bash_Unix_Directory_Sh_Digital Ocean - Fatal编程技术网

是什么导致bash将~解释为一个按字面命名的目录~&引用;? 出身背景

是什么导致bash将~解释为一个按字面命名的目录~&引用;? 出身背景,bash,unix,directory,sh,digital-ocean,Bash,Unix,Directory,Sh,Digital Ocean,我正在使用Digital Ocean API创建一个新服务器(droplet),并包含一个bash脚本,当服务器第一次启动时自动运行 问题 在我的bash脚本(以root运行)中,我尝试通过its安装ohmyzsh,它尝试在~中安装它。但是,当我使用ssh连接到机器中时,我发现Oh My Zsh已安装到/~/而不是/root 问题 是什么原因导致bash将~解释为文件夹的名称而不是$HOME的别名,我能做些什么来解决这个问题吗?Oh My Zsh安装脚本不属于我,所以我不能简单地将每个~更改为$

我正在使用Digital Ocean API创建一个新服务器(droplet),并包含一个bash脚本,当服务器第一次启动时自动运行

问题 在我的bash脚本(以root运行)中,我尝试通过its安装ohmyzsh,它尝试在
~
中安装它。但是,当我使用ssh连接到机器中时,我发现Oh My Zsh已安装到
/~/
而不是
/root

问题
是什么原因导致bash将
~
解释为文件夹的名称而不是
$HOME
的别名,我能做些什么来解决这个问题吗?
Oh My Zsh安装脚本不属于我,所以我不能简单地将每个
~
更改为
$HOME
/root
(当然,我可以拼凑一个sed命令来替换安装脚本中的内容,但似乎应该有一个更简单的方法……)

这可以通过几种方式实现。采取以下措施:

  • -如果tilde是变量中的文字内容,则tilde扩展将不会在变量扩展时进行
  • -如果通过其他扩展(即,
    ~$user
    )创建波浪形表达式,则需要使用其他方法对其进行扩展
  • 如果未定义
    $HOME
    ,则不会进行波浪线扩展

向我们展示上下文。如果
~
在展开的变量中是文本,那么就可以了,但我们需要查看导致错误以权威方式出现的特定代码实例,这是问题的一部分。此外,是否定义了
HOME
,也很重要。(而且,呃,你说你在用bash运行一个oh my zsh安装脚本,而不是zsh?有很多不同的shell,它们之间并不兼容)…例如:
var=“~/foo”;mkdir-p”$var”
会导致问题,但这只是许多可能机制中的一种。在不显示个别故障案例的具体代码的情况下,此问题只是一个推测。(可能重复,此问题应加以区分:;)嘿@CharlesDuffy,谢谢你的评论!看起来我盲目地假设
$HOME
会被定义,但事实并非如此。一旦我手动定义了它,一切都按预期进行了。非常感谢你的帮助!