Jak użyć ln -s do utworzenia skrótu wiersza poleceń?

11

Mam plik sh, który chciałbym móc otworzyć z terminala w dowolnym momencie. Chciałbym wpisać „studio” w terminalu i mieć otwarte studio Androida

Pamiętam, ln -sże to zrobiłem, ale zapomniałem i zmarnowałem już dużo czasu na przeszukiwanie sieci.

Ponadto, w którym katalogu znajduje się utworzony link symboliczny?

Oto składnia z mojego wysiłku, nie znaleziono polecenia

ricardo@debian:~$ ln -s /opt/android-studio/bin/studio.sh studio
ricardo@debian:~$ studio
bash: studio: command not found
rickyjoepr
źródło
spróbuj ./studio.
Sebastian,
Chcę zrobić link do ./studio, który mogę otworzyć z dowolnego miejsca, po prostu wpisując w studio lub bananie
rickyjoepr
Jeśli chcesz uruchomić skrypt z dowolnego miejsca przy użyciu studiosamego, musisz umieścić link w miejscu, które jest przeszukiwane przez powłokę. Powłoka przeszukuje wszystko w echo $PATH. Możesz zmienić $PATHlub umieścić link w jednym z katalogów $PATH. Co wolisz?
Sebastian,
4
@Sebastian Proszę używać odpowiedzi, aby odpowiadać na pytania, a nie komentarze. I proszę, nie sugeruj usuwania pytań po udzieleniu odpowiedzi. Jesteśmy tutaj, aby zbudować repozytorium odpowiedzi, które pozostają w pobliżu i są przydatne dla przyszłych użytkowników.
Gilles „SO- przestań być zły”
1
Może ci się spodobać aliaspolecenie, które jest powszechnie używane zamiast tworzenia dowiązań symbolicznych w celu skrócenia nazw poleceń.
Winny

Odpowiedzi:

10

Uruchomione polecenie utworzyło dowiązanie symboliczne w bieżącym katalogu. Sądząc po znaku zachęty, bieżący katalog to katalog domowy. Tworzenie dowiązań symbolicznych do programów wykonywalnych w katalogu domowym nie jest szczególnie przydatne.

Po wpisaniu nazwy programu powłoka szuka jej w katalogach wymienionych w PATHzmiennej środowiskowej . Aby zobaczyć wartość tej zmiennej, uruchom echo $PATH. Katalogi są oddzielone dwukropkiem ( :). Typowa ścieżka jest, /home/ricardo/bin:/usr/local/bin:/usr/bin:/binale istnieje wiele odmian.

Musisz utworzyć ten symboliczny link w jednym z katalogów wymienionych w $PATH. Jeśli chcesz, aby polecenie było dostępne dla wszystkich użytkowników, utwórz łącze w /usr/local/bin:

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

Jeśli chcesz, aby polecenie było dostępne tylko dla ciebie (co jest jedyną możliwością, jeśli nie masz uprawnień administratora), utwórz link w ~/bin( binpodkatalog katalogu domowego).

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

Jeśli Twoja dystrybucja nie znajduje się /home/ricardo/binw twoim PATH(gdzie /home/ricardojest twój katalog domowy), stwórz go najpierw za pomocą mkdir ~/bini dodaj do swojego PATH, dodając następujący wiersz do ~/.profile(utwórz plik, jeśli nie istnieje):

PATH=~/bin:$PATH

.profilePlik jest odczytywany podczas logowania. Można go przeczytać w bieżącym terminalu poprzez uruchomienie . ~/.profile(dotyczy to tylko programy uruchamiane z tego terminala).

Gilles „SO- przestań być zły”
źródło
1
+1, ale jak komentuje Winny, myślę, że alias w ~/.bashrctym miejscu byłby prostszy.
Sparhawk
@Sparhawk Alias ​​działałby tylko w celu wywołania programu z interaktywnej powłoki, a nie ze skryptu, skrótu na pulpicie lub jakiegokolwiek innego programu.
Gilles 'SO - przestań być zły'
1
To prawda, ale pytanie brzmi I would like to type "studio" into the terminal, a wynika to z tytułu i cytowanych poleceń.
Sparhawk
1

Najbardziej intuicyjnym sposobem realizacji Twojego życzenia jest użycie aliasu. Rodzaj:

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

lub wprowadź powiązany alias w pliku .profile lub lepszym: co twoja powłoka używa jako $ ENV.

Pamiętaj, że nadal może być konieczne dodanie

/opt/android-studio/bin

do ŚCIEŻKI, aby móc korzystać z oprogramowania. Najlepiej jest najpierw sprawdzić, czy działa bez rozszerzonej ścieżki.

schily
źródło