/ binにシンボリックリンクを作成しても機能しない


8

MacでSublime Textへのシンボリックリンクを作成する3つの方法を試しましたが、毎回ターミナルを再起動した後も、コマンドが見つからないというメッセージが表示され続けます。MacでYosemiteを使用しています(OSX Yosemite、10.10)。subコマンドでSublimeを開くことができるように、シンボリックリンクを作成するにはどうすればよいですか?

1

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

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

3(引用符なし)

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

リンクは実際にsubと呼ばれる/ binに何かを作成しますか?sudoを試しますか?
クリス2015年

1
引用符を使用する場合、バックスラッシュは不要です。引用符を使用しない場合は、バックスラッシュが必要です。/Applications/…回答で指摘されているように、先頭にスラッシュが必要です。また、書き込むにはroot権限が必要です/bin(したがってsudo)。残りの問題は、そのような実行可能ファイルを実行することで十分かどうかです。open "/Applications/Sublime\ Text.app"ファイルのコンテンツとして代わりに何かをするシェルスクリプトが必要ないことを確認します/binか?
Jonathan Leffler、2015年

回答:


16

あなたはあなたのアプリケーションの開始時および「/」が欠落しているsudoよう/binに所有されているroot、あなたが実際に通常のユーザーとして、それに書き込むことはできません。あなたが現在持っているように、それはあなたの現在のディレクトリがシステムのルートである場合にのみ機能します。もちろん、これはSublime TextアプリがメインのApplicationsフォルダーにあることを前提としています。

これを試して…

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

より良いオプションかもしれません。

または(おそらくシェルスクリプト内から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 2015年

パスを一重引用符で囲むことを忘れないでください。エイリアスsubl = '/ Applications / Sublime \ Text.app/Contents/SharedSupport/bin/subl'また、これを〜/ .bash_profile
drct

1

パーティーに遅れました。Macのセットアップ時に同じ問題が発生し、いくつかのことを試しました。ここに私のために働いたものがあります。

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

詳細については、このgithubリポジトリにアクセスしてください。


コマンドが失敗するという事実を除けば、あなたが使用しなかったためsudoにこの場合はそれが必要であるということとは別に、これはモックマンの答えの中ですでに提供されているものとどう違うのですか?彼がsubvs を使用することを選択したという事実の他に、それを使用するsublために1つ少ない文字を繰り返し入力するために、それは本当に私が見ることができるものからではありません!
user3439894

@ user3439894 sudoは必須ではありません。そして、用途上記のコマンド/usr/local/binではない/usr/bin上記のコマンドのように。/usr/local/bin/ usr / binはディストリビューション管理のユーザープログラムに使用されるのに対し、ユーザーアプリケーションの推奨ディレクトリです。したがって、subvs だけが変更されてsublいるわけでなく、単にユーザー設定に依存しているだけです。彼らが書きたいもの。それは混乱が生じた場合、私は謝罪...
LT

1.管理者アカウントからそのままコマンドを実行すると、ln: /usr/local/bin/subl: Permission denied2 が返されます。mockmanの回答/usr/local/bin/の2番目のsudo ln -sコマンドに完全に含まれているので、モックマンの回答を再読することをお勧めします!
user3439894 '25
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.