【问题标题】:PATH vs symlink subl: command not foundPATH vs symlink subl:找不到命令
【发布时间】:2019-04-02 15:01:28
【问题描述】:

当我在我的 Mac 上 echo $PATH 时,我看到了:

/Users/me/.nvm/versions/node/v8.2.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:/Applications/Sublime\ Text.app/Contents/SharedSupport/bin

运行 code 以使用 vscode 编辑器打开项目有效,但是 subl 得到错误 -bash: subl: command not found。我注意到网上很多人建议符号链接到usr/local/bin 但是我不明白如果它已经在我的路径中,为什么这是必要的。

如果我 cd /Applications/Sublime\ Text.app/Contents/SharedSupport/bin 我看到 subl 存在那里。

如果我在终端 /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl 中运行以下命令,那么 sublime 就会打开。但是,如果我尝试直接从该 bin 内部运行 subl,则它不会打开。

bin内的subl有以下权限:-rwxr-xr-

我通过将其添加到我的.bashrc 来将其添加到我的路径中:

export PATH="$PATH:/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/"

我不太确定为什么它没有使用命令subl 打开,而且我不明白如果它在我的 PATH 中,为什么我需要链接。我更愿意用我理解的解决方案来解决它。

【问题讨论】:

  • 我不知道 mac。路径上的空格是否真的需要转义?我可以看到它们在命令行上很有用,但是!也许这就是人们喜欢使用符号链接的原因? :-)
  • 哦!实际上,在终端中测试export PATH=... 时我确实需要转义,但我不需要.bashrc 中的转义!奇怪的是,vscode 路径在 bashrc 中也有转义,但无论有无转义都适用
  • @Turnipdabeet 你目前正在逃跑两次。引号不定义字符串;它们隐式地转义了引号中包含的每个字符。 "foo" 等同于 \f\o\o

标签: bash path sublimetext3


【解决方案1】:

您正在两次转义空格。引号会隐式转义它们包含的每个字符,包括您用来转义空格的 \。以下任何一种都可以:

export PATH=$PATH:/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/
export PATH="$PATH:/Applications/Sublime Text.app/Contents/SharedSupport/bin/"

您选择哪个是个人喜好问题。

请注意,您也可以删除export。您导出名称,而不是值,因此一旦导出PATH,它就会保持导出状态。 (事实上​​,PATH 是默认导出的,因为您从启动 shell 的进程继承了它。)

【讨论】:

    猜你喜欢
    • 2013-03-17
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 2022-08-05
    • 1970-01-01
    相关资源
    最近更新 更多