Więc próbowałem eksperymentować i stworzyłem alias
w .bashrc
. Jednak po przetestowaniu polecenia otrzymuję:
[rkahil@netmon3 ~]$ menu
-bash: menu: command not found
Oto, co mam w .bashrc
pliku:
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
alias menu='./menuScript.sh'
alias vi='vim'
Zabawne jest to, że kiedy stworzyłem alias vi
, zadziałało. Ale menu nie. Sprawdziłem poprzednie posty na UnixStackExchange i próbowałem śledzić inne posty, ale bezskutecznie. Czy ktoś jeszcze ma jakieś sugestie?
./menuScript.sh: command not found
No such file or directory
, co wciąż nie jest tym samym, co błąd OP. Jednak kwestia ta nadal istnieje - najlepiej byłoby mieć ścieżkę bezwzględną, chyba że alias będzie zawsze używany tylko z katalogu, w którym sięmenuScript.sh
znajduje.Odpowiedzi:
Powinieneś spróbować z
alias menu='bash ./menuScript.sh'
. Nie jestem obecnie na komputerze z systemem Linux, więc nie mogę go przetestować, ale powinien działać. Kiedy wywołujesz alias, nie wie on, co zrobić ze ścieżką, więc musisz dołączyćbash
na początku.Zresetowanie terminala pomaga po dokonaniu zmiany.
źródło
menuScript.sh
że nie został onchmod
przystosowany do pliku wykonywalnego, w takim przypadku komunikat o błędzie brzmiałby: „Odmowa zezwolenia”. Podejrzewam, że wymuszenie ponownego odczytania.bashrc
pliku jest odpowiedzią. ………………… PS Powłoka wie, co zrobić ze ścieżką w taki sam sposób, jak robi to użytkownik,./menuScript.sh
wpisując plik - próbując wykonać plik.Kiedy to zrobisz
tworzysz alias, który mówi „ten plik”, ale nie mówi, co właściwie z nim zrobić.
Jeśli jednak to zrobisz
lub
Mówisz, uruchom ten plik.
źródło
Czy pamiętasz źródło ~ / .bashrc po wprowadzeniu zmian? Ponieważ zmiany obowiązują w pliku .bashrc po ponownym uruchomieniu komputera lub po prostu pozyskaniu pliku.
źródło
.bashrc
, wykonaj następujące czynności…”. Z drugiej strony wyjaśnienie pytań (np. „Czy zapomniałeś…?”) Wydaje się bardziej odpowiednie dla komentarzy. Nie wymagałoby to zbytniego zmieniania zdania, aby ten post wydawał się bardziej odpowiedni do odpowiedzi.source ~/.bashrc
lub. ~/.bashrc
możesz otworzyć kolejną powłokę. To takie proste. Ponowne uruchomienie nie jest wymagane.Powodem, dla którego działało,
vim
jest to, że jest to program, który można wywołać bez bezpośredniej ścieżki. Nie musisz wyraźnie mówić „Chcę, aby to było wykonywane jako program”, ponieważvim
już jest jeden. Jest navim
stałe zapisany w systemie operacyjnym, że po otrzymaniu polecenia przejdź do pliku i uruchom go w/usr/bin/vi
dowolnym miejscu.źródło
vim
dostępny w,$PATH
który może być binarnym plikiem wykonywalnym, skryptem wykonywalnym, a nawet dowiązaniem symbolicznym do innego programu. Jeśli usuniesz ten wpisvim
, przestanie on być dostępny dla użytkowników.ifvi
który mieszka w moim$HOME/bin
(który zdarza się w moim$PATH
). Po prostu używam go w ten sam sposób, w jaki mogę uruchomić system binarny zainstalowany w systemie. Naprawdę nie ma znaczenia, że jest to program niestandardowy.Istnieją dwa problemy z aliasem
Wymaga to przebywania w określonym katalogu podczas wywoływania aliasu. Jeśli znajdujesz się w katalogu, w którym
menuScript.sh
nie istnieje, alias się nie uruchomi.Byłoby lepiej, gdybyś
menuScript.sh
zdefiniował pełną ścieżkę bezwzględną do skryptu podczas definiowania aliasu, nplub podobne.
Jak już powiedzieli inni, innym powodem niepowodzenia aliasu jest to, że skrypt nie jest wykonywalny lub ma niepoprawną
#!
linię. Upewnij się, że skrypt jest wykonywalny za pomocąi że pierwszą linią skryptu jest
lub jakąkolwiek ścieżkę do
bash
(lub jaką powłokę skrypt został napisany) w twoim systemie.źródło