我想在我的.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
... 没有每次都输入语音标记?
提前致谢,
尼克
答案 0 :(得分:3)
这不是一个好主意。你应该学会处理shell,而不是依靠黑客来获得你觉得更美观的行为。
也就是说,在分配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
答案 1 :(得分:-2)
您可以通过创建一个为您设置引号的函数来轻松完成此操作:
cdd(){
command cd "$*"
}
现在,如果你输入
ps1="some path /with lots /of spaces/"
cdd $ps1
这确实会表现出理想的行为。
请注意(如其他评论中所示)如果$p1
中的路径名包含空格以外的特殊字符,可能无法正常工作 - 知道何时使用它之前使用它。