可执行符号链接文件不起作用

pit*_*las 5 bash filenames quoting

在 Mac OSX 上,我遇到了一件非常简单的事情。我的符号链接不想执行。你能帮我找出问题吗?谢谢!

$ echo $PATH
/Users/pitosalas/.rbenv/shims:/usr/local/bin:/usr/local/git/bin:/usr/bin:/bin:/usr/sbin:/sbin

$ ls -l /Applications/Sublime\ Text.app/Contents/SharedSupport/bin
total 320
-rwxr-xr-x@ 1 pitosalas  admin  160688 Jun 27 00:27 subl

$ ln -s "/Applications/Sublime\ Text.app/Contents/SharedSupport//bin/subl" /usr/local/bin/subl

$ chmod 755 /usr/local/bin/subl

$ ls -l /usr/local/bin/subl
lrwxr-xr-x  1 pitosalas  admin  63 Jul  1 16:36 /usr/local/bin/subl -> /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl

$ subl
-bash: subl: command not found
Run Code Online (Sandbox Code Playgroud)

回复评论:

什么重做?你不是说 rbenv rehash 吗?这里还有一个新 shell 中的命令:

/usr/local/bin/subl
Run Code Online (Sandbox Code Playgroud)

-bash: /usr/local/bin/subl: 没有那个文件或目录

mrb*_*mrb 7

如果您使用引号,请\从您的ln命令中删除:

ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl
Run Code Online (Sandbox Code Playgroud)

/在 bin 之前还有一个 double ,但这实际上并没有阻止操作系统找到该文件,而且看起来它无论如何都被删除了。)

  • @pitosalas 在可能的情况下使用 tab-expansion 构建命令行通常是个好主意。只需开始编写路径并点击选项卡即可查看完成情况。这样,你_知道_你有正确的道路。 (2认同)
  • @terdon:我知道......但这就是让我遇到麻烦的原因!在 Mac 上,当我用 Tab 键扩展目录名称中包含空格的路径时,即使带有引号,它也会插入反斜杠以转义空格! (2认同)
  • @pitosalas 是的,但是如果 shell 转义了它需要转义的所有内容,则您不再需要引用路径。我的观点是你_要么_用制表符扩展来构建路径,_或_你引用它,在这种情况下你不应该转义字符,因为它们已经被引用了。 (2认同)