Làm thế nào tôi có thể làm cho nó để tôi có thể chạy một chương trình cụ thể, chỉ bằng cách gõ tên của nó trong bảng điều khiển?


17

Tôi vừa mới cài đặt Light Table tải xuống từ kho git và làm theo hướng dẫn trên trang web này để tạo trình khởi chạy trên máy tính để bàn.

Bây giờ tôi muốn chạy chương trình bằng cách gõ trực tiếp vào terminal

LightTable

và không

./opt/LightTable/deploy/LightTable

6
@ user68186 Thêm thư mục chứa vào PATHbiến môi trường thường không phải là cách tốt nhất để đạt được điều này và đôi khi thậm chí có thể phá vỡ hệ thống hoặc tạo lỗ hổng bảo mật. (Người ta phải xem xét bất kỳ thực thi khác mà sẽ được chuyển thành lệnh từ này, cũng như nơi trong PATHnó được thêm vào.) Thêm một bí danh vỏ, như được bao phủ bởi những câu trả lời ở đây, là tốt hơn cho những ai không muốn xem xét phức tạp như vậy; nó cũng được điều chỉnh hẹp hơn cho ứng dụng cụ thể được đề cập. Do đó, đây không phải là một bản sao của câu hỏi đó, mặc dù chúng có chồng chéo lên nhau một chút.
Eliah Kagan

Liên quan (nhưng không nhất thiết là trùng lặp): Làm cách nào để thêm thư mục vào đường dẫn của tôi?
Seth

Câu trả lời:


20

Điều này có thể được thực hiện một cách thô bạo với một bí danh. Bạn có thể tạo bí danh bash vĩnh viễn bằng cách thêm một dòng vào .bashrctệp của mình .

Trong thiết bị đầu cuối chạy nano ~/.bashrc

Thêm dòng sau ở dưới cùng:

alias LightTable='/full/path/opt/LightTable/deploy/LightTable'

Lưu ý rằng tôi đã thêm đường dẫn đầy đủ thay vì .vậy nó sẽ hoạt động trong bất kỳ thư mục làm việc nào. Đóng và mở lại thiết bị đầu cuối hoặc chạy source ~/.bashrcđể tải lại tệp bashrc.


7

Đây không phải là một câu hỏi cơ bản, cách tốt nhất để làm điều này là tạo bí danh, Ill sử dụng netbeans làm ví dụ

Thiết bị đầu cuối mở Ctrl+Alt+T

nano ~/.bashrc

viết cái này ở dưới cùng của tập tin:

alias netbeans='/home/john/netbeans-7.0.1/bin/netbeans'

Ctrl + x

Y

Enter

Từ netbeans là lệnh bạn sẽ sử dụng để bắt đầu chương trình, bạn có thể thay đổi nó thành bất cứ điều gì bạn cần. Bên trong dấu ngoặc kép là lệnh bạn muốn chạy khi bí danh netbeans được gọi.

Để lệnh này được kích hoạt, bạn phải mở lại Terminal


Tôi không thể bỏ phiếu do danh tiếng thấp của tôi, nhưng cảm ơn bạn đã trả lời, nó rất hữu ích
dapias

5

Bạn có thể cố gắng sao chép tệp thực thi vào /usr/binnếu đó là chương trình thực thi đơn giản và không phụ thuộc vào bất kỳ tệp nào khác. nếu nó phụ thuộc vào các tệp khác, cách tốt nhất để làm là tạo một lệnh tắt cho chương trình.

Nơi bạn tạo bí danh là một mình (.bashrc, .profile, v.v.). Tuy nhiên, cá nhân tôi để tất cả các biến môi trường trong .bash_aliasestệp của mình (bạn cần tạo nó ở tư thế đầu tiên).

Tạo tệp .bash_aliases trong thư mục HOME của bạn và chỉnh sửa tệp bằng mọi cách bạn muốn. Sau đó, để tạo lối tắt, bạn có thể làm:

alias LightTable='path_to_opt/LightTable/deploy/LightTable'

Lưu tập tin và đó là nó.

ps: bạn cũng có thể đặt bí danh là lighttable và LIGHTTABLE trong trường hợp quên viết hoa chữ L hoặc nếu capslock hoạt động một cách tình cờ, vì vậy bạn không phải gõ lại lệnh.


Tôi không thể bỏ phiếu do danh tiếng thấp của tôi, nhưng cảm ơn bạn đã trả lời, nó rất hữu ích
dapias

Thay vào đó, nên đưa những thứ không được cài đặt qua Apt vào /usr/local/binthay thế. Những thứ trong /usr/bincó thể bị xóa hoặc thay thế bởi các gói Apt, nhưng những thứ trong đó /usr/local/binđược để lại một mình.
Chai T. Rex

3

Tôi không chắc tại sao những người trả lời khác không đề xuất điều này, nhưng như OP thực sự đã chỉ ra, việc chuẩn bị cho $PATHbiến sẽ là cách tôi có thể đạt được điều này:

echo 'PATH=/opt/LightTable/deploy:$PATH' >> ~/.bash_profile
source ~/.bash_profile

Sau đó chạy với:

LightTable

Lưu ý: Sau đó tôi sẽ bí danh LightTableđể lighttabledễ sử dụng : echo 'alias LightTable=lighttable' >> ~/.bash_alias && source ~/.bash_alias.
JoeNyland

2

Tôi nghĩ tốt hơn để tạo một liên kết tượng trưng hơn là một bí danh tôi nghĩ. Một bí danh có thể thay thế trên dòng lệnh của bạn khi bạn không muốn; tạo một liên kết tượng trưng sẽ cho phép bạn chạy chương trình theo ý muốn:

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin

Điều này sẽ tạo một lối tắt trong / usr / local / bin (cần có trong PATH của bạn!) Đến nơi LightTable thực sự. Cũng lưu ý rằng bạn cũng có thể đổi tên liên kết tượng trưng nếu bạn không thích chữ in hoa trong "LightTable":

sudo ln -s full_path_to_opt/LightTable/deploy/LightTable  /usr/local/bin/lighttable

Chỉ để tham khảo, nếu chương trình được thiết kế lúng túng, tức là phàn nàn về việc không tìm thấy tệp cấu hình hoặc thư viện hoặc bất cứ điều gì, thì một giải pháp khác có thể hữu ích hơn là tạo tập lệnh bao bọc. Để làm điều này, chỉ cần tạo một tệp (bất cứ nơi nào bạn muốn trong thời gian này) được gọi là "LightTable" (hoặc bất cứ thứ gì bạn thích) với cái này trong đó:

#!/bin/sh
# Simple script to run LightTable
if ! cd full_path_to_opt/LightTable/deploy/LightTable ; then
    echo "$0: error: LightTable directory not found." >&2
    exit 1
fi
exec ./LightTable

Thay đổi quyền của tệp này:

chmod 755 <wrapper_script>

và thử thực thi nó chỉ để xem nó có hoạt động không, và nếu vậy thì hãy chuyển nó sang / usr / local / bin:

sudo mv -i <wrapper_script> /usr/local/bin

Những gì bạn nói là đúng, nhưng không trả lời những gì anh ấy muốn. Anh ta muốn thực thi nó bằng cách sử dụng tên của tệp / bí danh của tệp
Johnn

1
@ John: Tôi xin lỗi, tôi không hiểu sự khác biệt là gì. Tôi hiểu câu hỏi khi yêu cầu một cách để thực hiện chương trình mà không phải chỉ định đường dẫn của nó. Việc shell sử dụng bí danh hay cơ chế PATH sẽ không khác biệt nếu bạn chỉ yêu cầu thực thi chương trình. Nếu bạn muốn làm một cái gì đó khác với tệp thì sử dụng bí danh để cung cấp đường dẫn đầy đủ của tệp thực sự là cách tốt nhất, nhưng anh ta chỉ muốn chạy tệp. Tôi có nhầm không?
Zorawar

Không, đó là lỗi của tôi, chính xác của bạn.
Johnn

1
@ John: Ah, tốt, cảm ơn vì con mắt quan trọng nào!
Zorawar

0

Tôi đã cố gắng làm điều này, khi tôi bắt đầu trong Ubuntu. Khi bạn đặt LightTable trong thiết bị đầu cuối, nó sẽ tìm kiếm một tệp có tên LightTable trong các $PATHthư mục. bạn có thể đặt echo $PATHđể có được các thư mục.

Nếu bạn muốn thực thi chương trình LightTable của mình ./opt/LightTable/deploy/LightTable, thì việc bạn phải làm là, đặt tệp Light Table của bạn vào /usr/games or /usr/bin.Nhưng điều đó đòi hỏi phải có Siêu người dùng

mở terminal bằng Ctrl + Alt + T

sau đó đặt

Tôi thích tạo một lối tắt của LightTable bằng cách sử dụng

sudo ln -s path/to/LightTable  /usr/games/LightTable

Sau đó đặt mật khẩu SU. Sau đó, bạn có thể truy cập chương trình của mình bằng cách sử dụng LightTabletrong thiết bị đầu cuối

Bạn có thể đặt /usr/binhoặc /usr/local/binthay vì /usr/games, bất cứ thứ gì là một $PATHthư mục, Nó không cần phải như vậy, nhưng tôi khuyên bạn nên đặt nó vào/usr/local/bin

Tôi cũng khuyên bạn nên thay đổi tệp đầu ra lightpaththay vìLightPath

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.