Jestem naprawdę nowy w korzystaniu z terminala i ślepo podążam za przewodnikiem, nie wiedząc, dlaczego on tam jest i co robi .. chociaż te przewodniki pomagają mi w instalacji odtwarzacza vmware.
ten działał dla mnie odkąd uczyniłem plik wykonywalnym, klikając plik i uruchamiając .. tylko powiedz, że potrzebny jest dostęp do konta root.
sudo sh vmwareplayer.txt
(przemianowano go na krótszy)
Jakoś wiem, co sudo
robi, ale co robi sh
? Bez niego pojawia się komunikat „Nie znaleziono pliku vmwareplayer.txt”. A w przypadku plików pakietów, dlaczego kończy się na .txt?
command-line
Gabino Garcia
źródło
źródło
sh
robi polecenie wywołujące skrypt. To pytanie dotyczy sposobu#!
działania pliku skryptu . Zupełnie inaczej.Odpowiedzi:
sh oznacza „shell”, a shell to stary, uniksowy interpreter wiersza poleceń. Tłumacz to program, który wykonuje określone instrukcje napisane w języku programowania lub skryptowym. Mówisz więc „Wykonaj dla mnie ten plik”.
Musisz zrozumieć, że Linux tak naprawdę nie patrzy na rozszerzenie pliku w celu ustalenia, co to jest plik (lub program). Tak długo, jak treść tego pliku jest napisana w sposób zrozumiały dla interpretera sh, będzie działać. Ale tylko ze względu na czytelność, takie pliki mają zwykle rozszerzenie .sh i nie mam pojęcia, co programista myślał, gdy nadał temu plikowi rozszerzenie .txt.
źródło
W Ubuntu
sh
lub/bin/sh
po prostu wskazujedash
.sh
ma uruchamiać domyślny interpreter poleceń, który dotyczydash
Ubuntu. 1dash
odnosi się do powłoki Debian Almquist.Powłoka jest interpretatorem wiersza poleceń dla systemu. Istnieje kilka innych jak muszle
bash
,csh
,zsh
itd. Oto krótki fragment stronę mandash
:Istnieje wiele samouczków na temat powłok Linuksa, możesz zacząć od tego artykułu z Wikipedii .
W przypadku pytania, jeśli piszesz
sh file
,dash
wykonuje sięfile
za ciebie.źródło
Tylko słowo komentarza:
sudo
wykonuje polecenie zroot
uprawnieniami. Gdy zadzwonisz,sudo vmwareplayer.txt
co wyraźnie oznacza „uruchom polecenie vmwareplayer.txt z dostępem root” i kończy się niepowodzeniem, ponieważ nie ma takiego programu.sudo sh command
oznacza „wykonajsh command
z uprawnieniami administratora”i
sh command
wykona polecenie pod powłoką Bourne'a.Powstaje nowe pytanie. Co to są muszle? To jest dłuższe pytanie i pewnie znajdziesz trochę informacji na wiki.
Tymczasem pamiętaj, że
man
to twój najlepszy przyjaciel.źródło
Uważam, że żaden z wcześniejszych respondentów nie odpowiedział na pytanie, które faktycznie zadałeś G., więc spróbuję. Przeplatanie
sh
podczas wykonywania programu, jak wspomniałeś, wykonuje program w nieinteraktywnej podpowłoce. Nieinteraktywne powłoki zachowują się inaczej (np. Inicjalizacja ) od standardowej powłoki interaktywnej, której używałeś podczas uruchamiania programu.Szczerze mówiąc nie wiem, jaki to ma praktyczny efekt. Jak zauważyłeś,
sh vmwareplayer.txt
jest (zwykle) w stanie wykonać coś w tym samym folderze, gdzie po prostuvmwareplayer.txt
(zwykle) nie będzie. To musi zrobić środowisko powłoki; nie jest to żadna jakość natywna dla samej powłoki lub samej podpowłoki. Można oczywiście bezpośrednio wykonać program w bieżącym katalogu jako root:sudo ./vmwareplayer.txt
. Z mojego doświadczenia wynika, że zawsze działa tak samo dobrzesudo sh vmwareplayer.txt
. Miałem nadzieję, że ktoś przyjdzie i wyjaśni, dlaczego podpowłoka była czasem pożądana.źródło
sh
Narzędzie jest interpreter języka polecenia / polecenie, które wykonuje polecenia odczytu z ciągu wiersza poleceń, standardowego wejścia lub podanego pliku. Aplikacja zapewnia, że polecenia do wykonania są wyrażone w języku opisanym w Shell Command Language.Na przykład:
Następujące polecenie wykonuje polecenie powłoki z łańcucha:
sh -c "cat myfile.txt"
tj. Wykonuje poleceniecat myfile.txt
Szczegółowe wyjaśnienie znajduje się pod następującym linkiem: http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html
źródło