Tạo một liên kết tượng trưng trong / bin không hoạt động


8

Tôi đã thử ba cách khác nhau để tạo liên kết tượng trưng đến Văn bản cao siêu trên máy Mac của mình và sau khi khởi động lại thiết bị đầu cuối mỗi lần, nó vẫn liên tục báo cho tôi biết lệnh không tìm thấy. Tôi đang sử dụng máy Mac với Yosemite (OSX Yosemite, 10.10). Làm cách nào để tạo liên kết tượng trưng để tôi có thể mở Sublime bằng sublệnh?

Một

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

Hai

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

Ba (không có trích dẫn)

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

liên kết thực sự tạo ra một cái gì đó trong / bin được gọi là phụ? thử sudo?
chris

1
Nếu bạn sử dụng dấu ngoặc kép, bạn không muốn dấu gạch chéo ngược. Nếu bạn không sử dụng dấu ngoặc kép, dấu gạch chéo ngược là cần thiết. Bạn cũng cần dấu gạch chéo hàng đầu /Applications/…, như được chỉ ra trong câu trả lời và bạn cần có quyền root để viết /bin(do đó sudo). Câu hỏi còn lại là liệu nó có đủ để chạy thực thi như thế không. Bạn có chắc chắn rằng bạn không muốn một tập lệnh shell thực hiện một cái gì đó giống open "/Applications/Sublime\ Text.app"như nội dung của tập tin /binkhông?
Jonathan Leffler

Câu trả lời:


16

Bạn đang thiếu '/' khi bắt đầu ứng dụng của bạn và sudo như /binđược sở hữu bởi rootvà bạn có thể không thực sự viết thư cho nó như là một người dùng bình thường. Như bạn hiện có nó, nó sẽ chỉ hoạt động nếu thư mục hiện tại của bạn là hệ thống gốc. Tất nhiên, điều này giả định rằng ứng dụng Sublime Text nằm trong thư mục Ứng dụng chính của bạn.

Thử cái này…

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

Một suy nghĩ sau: Nó được coi là thực tiễn xấu để thay đổi nội dung /bin/usr/binbởi vì bất kỳ nâng cấp OS X sắp tới nào cũng có thể xóa sạch nội dung ở đó. /usr/local/binlà nơi thông thường để cài đặt nhị phân do người dùng cung cấp, vì vậy

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

có thể là lựa chọn tốt hơn

Hoặc (như bạn có thể không bao giờ cần chạy Sublime Text từ trong tập lệnh shell), chỉ cần xác định bí danh bash

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

cần được thêm vào tập tin khởi động bash của bạn để làm cho nó dính

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

3
Bạn cần sử dụng sudovà nếu bạn định trích dẫn tên đường dẫn thì đừng sử dụng dấu gạch chéo ngược để thoát khoảng trắng!
dùng3439894

Đừng quên các dấu ngoặc đơn xung quanh đường dẫn: alias subl = '/ Ứng dụng / Sublime \ Text.app/Contents/SharedSupport/bin/subl' Cũng tốt hơn nên đặt nó vào ~ / .bash_profile
drct

1

Đi dự tiệc muộn. Tôi gặp vấn đề tương tự khi thiết lập máy Mac của mình và thử một vài thứ. Đây là những gì làm việc cho tôi.

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

Để biết thêm thông tin, hãy đến repo github này .


Ngoài thực tế là lệnh của bạn sẽ thất bại, vì bạn đã không sử dụng sudovà nó được yêu cầu trong trường hợp này, làm thế nào khác với những gì đã được cung cấp trong câu trả lời của mockman? Khác với thực tế là anh ấy chọn sử dụng subso với subl, để gõ một ký tự ít hơn nhiều lần để sử dụng nó, nó thực sự không phải từ những gì tôi có thể thấy!
dùng3439894

@ user3439894 sudo không phải là một yêu cầu. lệnh trên sử dụng /usr/local/binkhông /usr/binnhư các lệnh trên. /usr/local/binlà thư mục giới thiệu cho các ứng dụng người dùng trong khi / usr / bin được sử dụng cho các chương trình người dùng được quản lý phân phối. Vì vậy, subvs sublkhông thay đổi duy nhất, nó chỉ đơn giản phụ thuộc vào sở thích của người sử dụng; những gì họ muốn viết. Tôi xin lỗi nếu nó gây nhầm lẫn ..
LT

1. Chạy lệnh của bạn như từ tài khoản quản trị viên, trả về ln: /usr/local/bin/subl: Permission denied2. Tôi đề nghị bạn đọc lại câu trả lời của mockman vì nó hoàn toàn có /usr/local/bin/trong sudo ln -slệnh thứ hai trong câu trả lời của anh ấy!
user3439894
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.