首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >路径中的波浪号不会扩展到主目录

问路径中的波浪号不会扩展到主目录
EN

Stack Overflow用户
提问于 2011-04-22 02:25:02
回答 5查看 10.7K关注 0票数 21

假设我在/home/user/中有一个名为Foo的文件夹(我的/home/user也由~表示)。

我想要一个变量

a="~/Foo",然后do

cd $a

我得到了-bash: cd: ~/Foo: No such file or directory

然而,如果我只做cd ~/Foo,它工作得很好。有什么关于如何让它工作的线索吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-22 02:34:59

您可以这样做(变量赋值时不带引号):

代码语言:javascript
复制
a=~/Foo
cd "$a"

但在本例中,变量$a将不存储~/Foo,而是存储扩展形式的/home/user/Foo。或者,您可以使用eval

代码语言:javascript
复制
a="~/Foo"
eval cd "$a"
票数 28
EN

Stack Overflow用户

发布于 2011-04-22 02:34:58

您可以使用$HOME代替代字号(代字号由shell展开为$HOME的内容)。示例:

代码语言:javascript
复制
dir="$HOME/Foo";
cd "$dir";
票数 15
EN

Stack Overflow用户

发布于 2021-03-01 01:13:45

虽然这个问题只是一个变通方法,但它被列为许多问为什么会发生这种情况的问题的副本,所以我认为有必要给出一个解释。根据https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06的说法

单词扩展顺序如下:

波浪号展开、参数展开、命令替换、算术展开,从头到尾。

当外壳程序对字符串cd $a求值时,它首先执行代字号扩展(这是一个无操作操作,因为$a不包含代字号),然后将$a扩展为字符串~/Foo,这是最终作为参数传递给cd的字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5748216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档