1

我想在我的 .bashrc 中设置这样的东西

export p1=`eval echo ~/projects/customer name/project name`
export p2=`eval echo ~/projects/customerb name/project name`

cd $p1由于空格,键入失败,我得到未找到目录的问题。

我知道打字cd "$p1"在变量周围带有语音标记)是有效的。

如何正确设置我的变量,以便我可以做这样的事情......

cd $p2
cp $p1/file $p2/
open $p1/lib 

...无需每次都输入语音标记?

在此先感谢,
尼克

4

2 回答 2

3

这不是一个好主意。您应该学会按原样处理外壳,而不是依靠 hack 来获得您认为更美观的行为。

也就是说,您可以通过IFS在分配时从变量中删除空间来达到您想要的效果p1

样本:

IFS= p1="/path with/some/spaces in/it"
ls -l $p1

现在这是不言而喻的,但无论如何我都会说清楚,你不应该放松IFS并保持这种状态;大多数时候结果不会是你所期望的。您应该只对特定命令执行此操作。

此外,您要查找的术语是“双引号”,而不是“语音标记”。一般而言,在谷歌搜索、提问和搜索文档时,最好使用正确的行话。

编辑:

复制粘贴友好版本:

IFS= export p1="$HOME/projects/customer name/project name"
cd $p1
于 2012-07-09T10:45:01.687 回答
-2

您可以通过创建一个为您放置引号的函数轻松地做到这一点:

cdd(){
    command cd "$*"
}

现在,如果你输入

ps1="some path /with lots /of spaces/"
cdd $ps1

这确实会显示所需的行为。

请注意(如其他注释中所示) ,如果路径名中包含空格以外的特殊字符,这可能无法按预期工作——在使用它之前知道何时使用它。 $p1

于 2012-07-09T10:37:56.723 回答