〜正被替换为bash中的变量值

时间:2015-03-04 13:58:02

标签: linux bash shell variables scripting

所以我有一个执行此操作的脚本

wget firefoxDownloadLink -o ~/firefox
mkdir ~/firefox-17
cd ~/firefox-17
tar xjf ~/firefox-17.0.1.tar.bz2

我得到了这个,并且不知道为什么:

cd: context: No such file or directory
mkdir: cannot create directory `context/firefox-17': No such file or directory
cd: context/firefox-17: No such file or directory
tar (child): context/firefox-17.0.1.tar.bz2: Cannot open: No such file or directory

我已经设置了一个带有上下文值的变量,但我不明白为什么~被替换为该值。如果我没有设置该值,它可以正常工作,但现在我需要它。

有关可能发生的事情的任何建议?

1 个答案:

答案 0 :(得分:0)

~将替换为$HOME的值,该值通常指向您的主目录。看起来你已经覆盖了$HOME

来自bash手册页:

  

如果单词以不带引号的波形符(~)开头,则第一个未加引号的斜杠之前的所有字符(或所有字符,如果没有未加引号的斜杠)都被视为波浪号前缀。如果没有引用tilde-prefix中的任何字符,则代字号后面的波浪号前缀中的字符将被视为可能的登录名。如果此登录名是空字符串,则使用shell参数HOME的值替换代字号。如果未设置HOME,则替换执行shell的用户的主目录。否则,tilde-prefix将替换为与指定登录名关联的主目录。