Jak mogę to zrobić, aby móc uruchomić określony program, wpisując jego nazwę w konsoli?

17

Niedawno zainstalowałem Light Table pobierając go z repozytorium git i postępowałem zgodnie z instrukcjami na tej stronie, aby utworzyć program uruchamiający pulpit.

Teraz chcę uruchomić program, wpisując bezpośrednio w terminalu

LightTable

i nie

./opt/LightTable/deploy/LightTable
dapias
źródło
6
@ user68186 Dodanie katalogu zawierającego do PATHzmiennej środowiskowej często nie jest najlepszym sposobem na osiągnięcie tego, a czasem może nawet uszkodzić system lub stworzyć luki w zabezpieczeniach. (Trzeba rozważyć wszelkie inne pliki wykonywalne, które zostanie przekształcony poleceń od tego, jak , gdzie w PATHjest on dodawany.) Dodawanie aliasu powłoki, objętych odpowiedziami tutaj jest lepsze dla każdego, kto nie chce rozważać takie zawiłości; jest również wąsko dostosowany do konkretnej aplikacji. Nie jest to zatem duplikat tego pytania, choć się trochę pokrywają.
Eliah Kagan
Powiązane (ale niekoniecznie duplikaty): Jak dodać katalog do mojej ścieżki?
Seth

Odpowiedzi:

20

Można to z grubsza osiągnąć za pomocą aliasu. Możesz utworzyć trwały alias bash, dodając jedną linię do swojego .bashrcpliku.

W biegu terminalowym nano ~/.bashrc

Dodaj następujący wiersz na dole:

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

zauważ, że dodałem pełną ścieżkę zamiast, .więc będzie to działać w dowolnym katalogu roboczym. Zamknij i ponownie otwórz terminal lub uruchom, source ~/.bashrcaby ponownie załadować plik bashrc.

Dan
źródło
7

To nie jest elementarne pytanie, najlepszym sposobem na zrobienie tego jest utworzenie aliasu, na przykład użyję netbeans

Otwórz terminal Ctrl+Alt+T

nano ~/.bashrc

napisz to na dole pliku:

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

Ctrl + x

Y

Enter

Słowo netbeans to polecenie, którego użyjesz do uruchomienia programu, możesz zmienić je na cokolwiek potrzebujesz. W cudzysłowie znajduje się polecenie, które chcesz uruchomić, gdy wywoływany jest alias netbeans.

Aby to polecenie było aktywne, musisz ponownie otworzyć Terminal

Johnn
źródło
Nie mogę głosować z powodu mojej niskiej reputacji, ale dziękuję za odpowiedź, było to bardzo przydatne
dapias
5

Możesz spróbować skopiować plik wykonywalny, /usr/binjeśli jest to prosty program wykonywalny i nie zależy od żadnego innego pliku. jeśli to zależy od innych plików, najlepiej jest utworzyć polecenie skrótu do programu.

Utworzenie aliasu odbywa się samodzielnie (.bashrc, .profile itp.). Jednak osobiście zezwalam na wszystkie moje zmienne środowiskowe w moim .bash_aliasespliku (musisz go utworzyć na pierwszy rzut oka).

Utwórz plik .bash_aliases w folderze HOME i edytuj go w dowolny sposób. Następnie, aby utworzyć skrót, możesz:

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

Zapisz plik i to wszystko.

ps: możesz również umieścić alias jako lighttable i LIGHTTABLE, na wypadek gdybyś zapomniał pisać dużą literą L lub jeśli Capslock jest aktywny przypadkowo, więc nie musisz wpisywać polecenia ponownie.

Geo
źródło
Nie mogę głosować z powodu mojej niskiej reputacji, ale dziękuję za odpowiedź, było to bardzo przydatne
dapias
/usr/local/binZamiast tego zaleca się umieszczenie rzeczy, które nie zostały zainstalowane za pomocą Apt . Rzeczy w /usr/binmożna usunąć lub zastąpić pakietami Apt, ale rzeczy /usr/local/binpozostawia się w spokoju.
Chai T. Rex,
3

Nie jestem pewien, dlaczego inni odpowiadający nie zasugerowali tego, ale jak faktycznie zauważył PO, przygotowanie się do $PATHzmiennej byłoby sposobem, w jaki to osiągnęłam:

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

Następnie uruchom z:

LightTable
JoeNyland
źródło
Uwaga: Chciałbym następnie alias LightTableaby lighttablena łatwość obsługi: echo 'alias LightTable=lighttable' >> ~/.bash_alias && source ~/.bash_alias.
JoeNyland
2

Myślę, że lepiej stworzyć symboliczny link niż alias. Alias może dokonywać podstawień w linii poleceń, gdy nie chcesz; utworzenie dowiązania symbolicznego pozwoli Ci uruchomić program, jak chcesz:

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

Spowoduje to utworzenie skrótu w / usr / local / bin (który powinien już być w ŚCIEŻCE!) Do miejsca, w którym faktycznie znajduje się LightTable. Pamiętaj również, że możesz zmienić nazwę dowiązania symbolicznego, jeśli nie lubisz wielkich liter w „LightTable”:

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

Dla porównania, jeśli program jest niezręcznie zaprojektowany, tzn. Skarży się na brak plików konfiguracyjnych, bibliotek itp., To innym rozwiązaniem, które może być bardziej przydatne, jest utworzenie skryptu opakowania. Aby to zrobić, po prostu utwórz plik (gdziekolwiek chcesz) o nazwie „LightTable” (lub cokolwiek innego) z tym:

#!/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

Zmień uprawnienia do tego pliku:

chmod 755 <wrapper_script>

i spróbuj go wykonać, aby sprawdzić, czy działa, a jeśli tak, to przenieś go do / usr / local / bin:

sudo mv -i <wrapper_script> /usr/local/bin
Zorawar
źródło
To, co mówisz, jest prawdą, ale nie odpowiedział na to, czego chciał. Chciał go wykonać przy użyciu nazwy pliku / aliasu pliku
Johnn
1
@Johnn: Przepraszam, nie rozumiem, na czym polega różnica. Rozumiem pytanie jako pytanie o sposób wykonania programu bez konieczności określania jego ścieżki. To, czy powłoka używa aliasu, czy mechanizmu PATH, nie ma znaczenia, jeśli tylko poprosisz o uruchomienie programu. Jeśli chcesz zrobić coś innego z plikiem, skorzystanie z aliasu, aby podać pełną ścieżkę do pliku, jest rzeczywiście najlepszym sposobem, ale chce tylko uruchomić plik. Czy się mylę?
Zorawar
Nie, to była moja wina, masz rację.
Johnn
1
@Johnn: Ach, cóż, w każdym razie dzięki za krytyczne oko!
Zorawar
0

Próbowałem to zrobić, kiedy zaczynałem w Ubuntu. Kiedy umieścisz LightTable w terminalu, szuka katalogu o nazwie LightTable w $PATHkatalogach. możesz umieścić, echo $PATHaby uzyskać katalogi.

Jeśli chcesz uruchomić program LightTable ./opt/LightTable/deploy/LightTable, musisz umieścić plik Light Table w, /usr/games or /usr/bin.ale wymaga to uprawnień superużytkownika

otwórz terminal, naciskając Ctrl + Alt + T

następnie umieść

Wolę utworzyć skrót do LightTable przy użyciu

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

Następnie wpisz hasło SU. Następnie możesz uzyskać dostęp do swojego programu za pomocą LightTableterminala

Możesz umieścić /usr/binlub /usr/local/binzamiast tego /usr/games, co jest $PATHkatalogiem, nie musi tak być, ale zalecamy umieszczenie go w/usr/local/bin

Polecam również zmienić plik wyjściowy jako lightpathzamiastLightPath

Prashanth Sriram
źródło