Membuat tautan simbolis di / bin tidak berfungsi


8

Saya telah mencoba tiga cara berbeda untuk membuat tautan simbolis ke Teks Luhur di Mac saya dan, setelah memulai ulang terminal setiap kali, masih terus memberi tahu saya perintah tidak ditemukan. Saya menggunakan Mac dengan Yosemite (OSX Yosemite, 10.10). Bagaimana saya bisa membuat tautan simbolis sehingga saya bisa membuka Sublim dengan subperintah?

Satu

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

Dua

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

Tiga (tidak ada kutipan)

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

apakah tautan benar-benar membuat sesuatu di / bin yang disebut sub? coba sudo?
chris

1
Jika Anda menggunakan tanda kutip, Anda tidak ingin garis miring terbalik. Jika Anda tidak menggunakan tanda kutip, garis miring terbalik diperlukan. Anda juga memerlukan slash pada /Applications/…, seperti yang ditunjukkan dalam jawaban, dan Anda perlu root privilege untuk menulis /bin(karenanya sudo). Pertanyaan residual adalah apakah itu cukup untuk menjalankan executable seperti itu. Apakah Anda yakin tidak ingin skrip shell yang melakukan sesuatu seperti open "/Applications/Sublime\ Text.app"isi file /bin?
Jonathan Leffler

Jawaban:


16

Anda melewatkan '/' di awal aplikasi Anda dan sudoseperti /binyang dimiliki oleh rootdan Anda tidak dapat benar-benar menulisnya sebagai pengguna normal. Seperti yang Anda miliki saat ini, itu hanya akan berfungsi jika direktori Anda saat ini adalah root sistem. Tentu saja ini mengasumsikan bahwa aplikasi Teks Sublime ada di folder Aplikasi utama Anda.

Coba ini…

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

Satu renungan: Itu dianggap praktik buruk untuk mengubah konten /bindan /usr/binkarena setiap upgrade OS X mendatang dapat menghapus konten di sana. /usr/local/binadalah tempat biasa untuk menginstal binari yang disediakan pengguna, jadi

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

mungkin opsi yang lebih baik.

Atau (karena Anda mungkin tidak perlu menjalankan Sublime Text dari dalam skrip shell), cukup tentukan alias bash

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

yang harus ditambahkan ke file startup bash Anda untuk membuatnya tetap

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

3
Anda perlu menggunakan sudodan jika Anda akan mengutip pathname maka jangan gunakan garis miring terbalik untuk keluar dari spasi!
user3439894

Jangan lupa tanda kutip tunggal di sekitar jalan: alias subl = '/ Aplikasi / Sublime \ Text.app/Contents/SharedSupport/bin/subl' Juga lebih baik memasukkannya ke ~ / .bash_profile
drct

1

Terlambat ke pesta. Saya mengalami masalah yang sama ketika mengatur Mac saya dan mencoba beberapa hal. Inilah yang bekerja untuk saya.

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

Untuk informasi lebih lanjut, buka repo github ini .


Terlepas dari kenyataan bahwa perintah Anda akan gagal, karena Anda tidak menggunakan sudodan itu diperlukan dalam kasus ini, bagaimana ini berbeda maka apa yang sudah ditawarkan dalam jawaban mockman? Selain fakta bahwa ia memilih untuk menggunakan subvs. subl, sehingga untuk mengetik satu karakter yang kurang berulang untuk menggunakannya, itu benar-benar bukan dari apa yang bisa saya lihat!
user3439894

@ user3439894 sudo bukan keharusan. DAN perintah di atas /usr/local/bintidak menggunakan /usr/binsebagai perintah di atas. /usr/local/binadalah direktori rekomendasi untuk aplikasi pengguna sedangkan / usr / bin digunakan untuk program pengguna yang dikelola distribusi. Jadi, subvs subladalah tidak satu-satunya perubahan, itu hanya tergantung pada preferensi pengguna; apa yang ingin mereka tulis. Saya minta maaf jika itu menyebabkan kebingungan ..
LT

1. Menjalankan perintah Anda seperti dari akun admin, mengembalikan ln: /usr/local/bin/subl: Permission denied2. Saya sarankan Anda membaca kembali jawaban mockman karena benar-benar ada /usr/local/bin/di sudo ln -sperintah kedua dalam jawabannya!
user3439894
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.