Korzystam z systemu Mac OS 10.6 i próbuję dowiedzieć się czegoś o skryptach powłoki. Rozumiem, jak zapisać skrypt powłoki i uczynić go wykonywalnym, ale zastanawiam się, co mogę zrobić lub gdzie mogę zapisać plik, aby był globalny (czyli dostępny bez względu na folder, w którym się znajduję).
Na przykład, jeśli zapiszę plik .sh w katalogu / Users / username / i ustawię go jako wykonywalny, mogę wykonać ten skrypt tylko w tym określonym katalogu. Jeśli przejdę na przykład do / Users / username / Downloads, nie mogę wykonać skryptu.
Pomocne byłyby również wszelkie sugestie dotyczące zasobów, które pozwolą dowiedzieć się więcej o skryptach powłoki. Dzięki
PATH
najpierw o zmiennej środowiskowej, a następnie zaktualizuj pytanie.Odpowiedzi:
/usr/local/bin
byłaby najwłaściwszą lokalizacją. Mac OS X ma toPATH
domyślnieźródło
Tradycyjnie takie skrypty trafiają do
~/bin
(tj. Do katalogu bin w twoim katalogu domowym) lub/usr/local/bin/
Pierwszy oznacza, że skrypt będzie działał tylko dla ciebie, drugi jest przeznaczony dla skryptów, które chcesz, aby każdy w systemie mógł uruchomić.Jeśli to umieścisz
~/bin
, być może będziesz musiał dodać to do zmiennej środowiskowej PATH./usr/local/bin
powinien już być na ścieżce.źródło
Można to zrobić na dwa sposoby -
** UWAGA : Jeśli chcesz uruchomić skrypt za pomocą skróconej komendy, zamiast wpisywać całą nazwę pliku, dodaj następujące polecenie do swojego .bash_profile:
alias myscript='my_script.sh'
Następnie możesz uruchomić skrypt, po prostu wpisując
myscript
. (możesz subskrybować dowolny alias)źródło
W systemie operacyjnym Mac
źródło
.bash_profile
? Jest to o wiele prostsze (i to źródło .bashrc nigdy nie działało dla mnie).To jest bardzo łatwe, jeśli znasz swój plik bashrc! Spowoduje to wykorzystanie wyłącznie pliku .bashrc i zajmie to 2 sekundy.
(Używam Arch Linux Manjaro, więc używam .bashrc znajdującego się w moim katalogu domowym)
Kod do umieszczenia w pliku .bashrc:
# Simple bashrc method to launch anything in terminal from any directory YOURCOMMAND () { cd /path/to/directory/containing/your/script/ && ./YOURSCRIPT }
Jak widzisz, najpierw używasz prostego polecenia 'cd' i podajesz mu katalog lokalizacji skryptów, następnie używasz '&&', aby móc wykonać następne polecenie zaraz po, a na koniec otwórz skrypt tak, jak byś to zrobił normalnie! Super łatwe i zapisane bezpośrednio w pliku .bash! :)
Mam nadzieję, że komuś pomogłem!
Z poważaniem,
AnonymousX
źródło
Używając powłoki bash, zapisz ten skrypt jako funkcję, a następnie umieść go w .bashrc lub zbierz plik, który zawiera tę funkcję, przez „nazwa_pliku_źródłowego”
Teraz wykonaj skrypt przez wywołanie funkcji w powłoce.
źródło
Zapisanie go w
/usr/bin
(lub jakimkolwiek innym katalogu obecnym wPATH
) lub edycja wPATH
celu uwzględnienia katalogu, w którym go zapisałeś, w zasadzie sprawi, że będzie działać w dowolnym katalogu.źródło
/usr/bin
można całkowicie opróżnić i wymienić podczas aktualizacji systemu operacyjnego, dzięki czemu skrypt w tajemniczy sposób zniknie./usr/local/bin
jest do tego celu, jak wspomniał Bryan Oakley. Zobacz także Filesystem Hierarchy Standardz katalogu roboczego „script.sh” „mv [script.sh] / usr / local / bin” (nie testowano, ale wydaje się, że jest najmniej złożonym sposobem IMO).
źródło
sudo mv script.sh /usr/local/bin
, ponieważ ten katalog nie jest zapisywalny bez zwiększania uprawnień.Powinieneś umieścić go w globalnym katalogu plików wykonywalnych na swoim komputerze. Myślę, że zwykle byłoby to
/usr/bin
w systemach operacyjnych opartych na Uniksie (wymagałoby to jednak najczęściej uprawnień superużytkownika na tej maszynie).Możesz również umieścić go w dowolnym innym katalogu, który znajduje się w
$PATH
zmiennej środowiskowej, chociaż działałby tylko dla tych użytkowników, którzy mają ten katalog w tej zmiennej.Możesz znaleźć wartość
$PATH
, wpisującecho $PATH
shell. Katalogi są oddzielone:
.źródło