在/ bin中创建符号链接不起作用


8

我已经尝试了三种不同的方法来创建我的Mac上的Sublime Text的符号链接,并且每次重新启动终端后,它仍然一直告诉我找不到命令。我正在使用带优胜美地的Mac(OSX Yosemite,10.10)。如何创建符号链接,以便我可以用。打开Sublime sub 命令?

ln -s 'Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl' /bin/sub

ln -s "Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl" /bin/sub

(没有报价)

ln -s Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /bin/sub

链接实际上在/ bin中创建了一个名为sub的东西吗?试试sudo?
chris

1
如果使用引号,则不需要反斜杠。如果不使用引号,则必须使用反斜杠。你还需要领先的斜杠 /Applications/…,正如答案中指出的那样,您需要root权限才能写入 /bin (因此 sudo )。剩下的问题是它是否足以像这样运行可执行文件。你确定你不想要一个类似的shell脚本 open "/Applications/Sublime\ Text.app" 而是作为文件的内容 /bin
Jonathan Leffler

Answers:


15

你错过了应用开头的'/'和 sudo/bin 由...拥有 root 而你实际上不能像普通用户那样写信给它。正如您目前所拥有的那样,它只有在您当前的目录是系统根目录时才有效。当然,这假设Sublime Text应用程序位于您的主应用程序文件夹中。

试试这个…

sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /bin/sub

一个事后的想法:改变内容被认为是不好的做法 /bin/usr/bin 因为任何即将推出的OS X升级都可能会擦除那里的内容。 /usr/local/bin 是通常安装用户提供的二进制文件的地方,所以

[[ -d /usr/local/bin ]] || sudo mkdir /usr/local/bin
sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/sub

可能是更好的选择。

或者(因为您可能永远不需要在shell脚本中运行Sublime Text),只需定义一个bash别名即可

alias sub=/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl

应该添加到你的bash启动文件中以使其坚持下去

echo "alias sub=/Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl" >> ~/.bashrc

3
你需要使用 sudo 如果你要引用路径名,那么不要使用反斜杠来逃避空格!
user3439894

0

迟到了。我在设置我的Mac时遇到了同样的问题并尝试了一些方法。这对我有用。

ln -sv "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl

有关更多信息,请转到此处 github回购


除了您的命令将失败,因为您没有使用 sudo 并且在这种情况下需要它,这与mockman的答案中已经提供的内容有何不同?除此之外,他选择使用 subsubl,为了反复键入一个字符来使用它,它真的不是我能看到的!
user3439894

@ user3439894 sudo不是必需的。 上面的命令使用 /usr/local/bin/usr/bin 作为上面的命令。 /usr/local/bin 是用户应用程序的推荐目录,而/ usr / bin用于分发管理的用户程序。所以, sub VS subl 唯一的变化,它只取决于用户的喜好;他们想写什么。如果它引起混淆我道歉
L.T

1.从管理员帐户运行您的命令,返回 ln: /usr/local/bin/subl: Permission denied 我建议你重读嘲笑者的答案,因为它绝对有 /usr/local/bin/ 在第二 sudo ln -s 在他的回答命令!
user3439894
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.