Làm cách nào để sử dụng ln -s để tạo lối tắt dòng lệnh?


11

Tôi có một tập tin sh mà tôi muốn có thể mở từ thiết bị đầu cuối bất cứ lúc nào. Tôi muốn nhập "studio" vào thiết bị đầu cuối và mở studio android

Tôi nhớ lại bằng cách sử dụng ln -sđể làm điều này, nhưng tôi đã quên và đã lãng phí nhiều thời gian để tìm kiếm trên web.

Ngoài ra, trong thư mục nào là liên kết tượng trưng được tạo giữ trong?

Đây là cú pháp từ nỗ lực của tôi, không tìm thấy lệnh

ricardo@debian:~$ ln -s /opt/android-studio/bin/studio.sh studio
ricardo@debian:~$ studio
bash: studio: command not found

thử ./studio.
Sebastian

Tôi muốn tạo một liên kết đến ./studio mà tôi có thể mở từ bất cứ đâu bằng cách chỉ cần gõ trong studio hoặc chuối
rickyjoepr

Nếu bạn muốn thực thi tập lệnh từ bất cứ đâu bằng cách sử dụng studiomột mình, bạn phải đặt liên kết vào một nơi đang được tìm kiếm bởi trình bao. Shell tìm kiếm mọi thứ trong echo $PATH. Bạn có thể thay đổi $PATHhoặc đặt liên kết vào một thư mục của $PATH. Bạn thích cái nào hơn?
Sebastian

4
@Sebastian Vui lòng sử dụng câu trả lời để trả lời câu hỏi, không bình luận. Và xin vui lòng không đề nghị xóa câu hỏi sau khi chúng đã được trả lời. Chúng tôi ở đây để xây dựng một kho câu trả lời ở xung quanh và hữu ích cho khách truy cập trong tương lai.
Gilles 'SO- ngừng trở nên xấu xa'

1
Bạn có thể thích aliaslệnh, thường được sử dụng thay vì tạo các liên kết tượng trưng để rút ngắn tên lệnh.
Winny

Câu trả lời:


10

Lệnh bạn đã chạy đã tạo một liên kết tượng trưng trong thư mục hiện tại. Đánh giá theo lời nhắc, thư mục hiện tại là thư mục chính của bạn. Tạo các liên kết tượng trưng đến các chương trình thực thi trong thư mục chính của bạn không đặc biệt hữu ích.

Khi bạn gõ tên của một chương trình, shell sẽ tìm nó trong các thư mục được liệt kê trong PATHbiến môi trường . Để xem giá trị của biến này, hãy chạy echo $PATH. Các thư mục được phân tách bằng dấu hai chấm ( :). Một con đường điển hình là /home/ricardo/bin:/usr/local/bin:/usr/bin:/bincó rất nhiều biến thể ngoài kia.

Bạn cần tạo liên kết tượng trưng này trong một trong các thư mục được liệt kê trong $PATH. Nếu bạn muốn cung cấp lệnh cho tất cả người dùng, hãy tạo liên kết trong /usr/local/bin:

sudo ln -s /opt/android-studio/bin/studio.sh /usr/local/bin/studio

Nếu bạn muốn cung cấp lệnh chỉ dành cho bạn (đó là khả năng duy nhất nếu bạn không có đặc quyền của quản trị viên), hãy tạo liên kết trong ~/bin( binthư mục con của thư mục chính của bạn).

ln -s /opt/android-studio/bin/studio.sh ~/bin/studio

Nếu bản phân phối của bạn không đặt /home/ricardo/bintrong PATH( /home/ricardothư mục chính của bạn), hãy tạo nó trước mkdir ~/binvà thêm nó vào PATHbằng cách thêm dòng sau vào ~/.profile(tạo tệp nếu nó không tồn tại):

PATH=~/bin:$PATH

Các .profiletập tin được đọc khi bạn đăng nhập. Bạn có thể đọc nó ở nhà ga hiện tại bằng cách chạy . ~/.profile(điều này chỉ áp dụng cho các chương trình bắt đầu từ thiết bị đầu cuối mà).


1
+1 nhưng như nhận xét của Winny, tôi nghĩ bí danh ~/.bashrcsẽ đơn giản hơn.
Sparhawk

@Sparhawk Một bí danh sẽ chỉ hoạt động để gọi chương trình từ trình bao tương tác, không phải từ tập lệnh, lối tắt trên màn hình hoặc bất kỳ chương trình nào khác.
Gilles 'SO- ngừng trở nên xấu xa'

1
Đúng, nhưng các câu hỏi nêu I would like to type "studio" into the terminal, và điều này được ngụ ý từ các tiêu đề và các lệnh được trích dẫn.
Sparhawk

1

Cách trực quan nhất để thực hiện mong muốn của bạn là sử dụng bí danh. Kiểu:

alias studio=/opt/android-studio/bin/studio.sh

hoặc nhập một bí danh có liên quan vào .profile hoặc tốt hơn: cái mà shell của bạn sử dụng là $ ENV.

Lưu ý rằng bạn vẫn có thể cần thêm

/opt/android-studio/bin

đến PATH của bạn để có thể sử dụng phần mềm. Cách tốt nhất là trước tiên hãy thử xem nó có hoạt động mà không có PATH mở rộng hay không.

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.