环境变量,cd到带有空格的路径名:没有这样的文件或目录

问题描述 投票:0回答:2

带空格的路径名在引号中,但环境变量不想工作,这是怎么回事?

environment-variables whitespace cd
2个回答
3
投票

由于 POSIX shell 糟糕的变量扩展和分词规则,您的尝试不起作用。 @ZiggZagg 的评论并不是建议将您使用的双引号替换为单引号。他们建议您单引号路径。然而,由于 var 扩展与分词的相互作用,这不起作用。基本上,没有办法做你想做的事。但是,您可以将路径放入 var 中并使用它:

photos='/home/tomas/Pictures/New Folder'
cd "$photos"

注意需要引用 var 扩展以防止 shell 对扩展进行分词。

您可以通过使用别名或函数来更接近您想要的。例如,

photos() { cd '/home/tomas/Pictures/New Folder'; }
photos

0
投票

这个问题很容易解决: (请注意,我在 bash 脚本中执行此操作,但在任何 shell 中执行此操作都应该可行)

 oldIFS=$IFS 
    # save the original delims
 IFS="" 
    # Now erase all the delims
 DIR="/Users/dr_xemacs/Library/Application Support/minecraft/assets/indexes"
    # Assigning DIR now takes the whole line without cutting it at any delim
 IFS=$oldIFS 
    # reset delims

...and we have success.
© www.soinside.com 2019 - 2024. All rights reserved.