Kazano mi uruchomić to:
./yiic message ./app/messages/config.php
Ale nie rozumiem ./
znaczenia, czy ktoś może wyjaśnić, proszę.
Uwaga: uwierz mi, nie możemy tego zrobić w Google. Próbowałem:
./ czyli ./ ubuntu
To było to samo, co nic. :(
Kazano mi uruchomić to:
./yiic message ./app/messages/config.php
Ale nie rozumiem ./
znaczenia, czy ktoś może wyjaśnić, proszę.
Uwaga: uwierz mi, nie możemy tego zrobić w Google. Próbowałem:
./ czyli ./ ubuntu
To było to samo, co nic. :(
Odpowiedzi:
./
lub po prostu .
jest skrótem unix dla bieżącego katalogu.
Musisz go podać, gdy bieżący katalog nie znajduje się w ŚCIEŻCE. ŚCIEŻKA jest listą folderów przeszukiwanych podczas uruchamiania programu. (Możesz to ustalić pisząc echo $PATH
.) Jeśli plik wykonywalny nie znajduje się w ŚCIEŻCE, aby go uruchomić, musisz określić folder, w którym się on znajduje. Możesz to zrobić, podając pełną ścieżkę do pliku, ale jeśli plik jest w bieżący katalog, którego możesz użyć ./
jako skrótu.
Podobnie, ../
lub po prostu ..
jest skrótem dla katalogu powyżej bieżącego.
.
. Jest tak, ponieważ automatyczne korzystanie z bieżącego katalogu jest luką w zabezpieczeniach. Wyobraź sobie, że ktoś inny tworzy program, nazwał go, ls
a ty cd
do jego katalogu, a następnie wpiszls
Każdy katalog w wierszu poleceń ma wywołane dwa „katalogi specjalne” .
i ..
. Są one skrótem odpowiednio dla bieżącego katalogu i katalogu zawierającego bieżący katalog.
Na przykład cd ./more/directory/names
oznacza po prostu: „zacznij od bieżącego katalogu i kontynuuj ścieżkę”. Podobnie polecenie cd ..
oznacza „zmień jeden katalog w górę.
Jeśli chcesz nazwę bieżącego katalogu, możesz użyć pwd
polecenia. Ponadto, jeśli użyjesz -a
flagi dla ls
, możesz zobaczyć te dwa specjalne katalogi. Oznacza to, ls -a
że wyświetli listę zaczynającą się od .
i ..
.
Inni już wyjaśnili co .
i co ..
oznacza (odpowiednio katalog bieżący i katalog nadrzędny). Dotyczy to wszystkich nazw ścieżek.
Kiedy otwierasz terminal, zwykle zaczynasz w swoim katalogu domowym: ~
(który rozwija się do /home/username
). Wszystkie poniższe ścieżki są równoważne, pod warunkiem, że bieżący katalog roboczy to /home/username
:
/home/username
.
../username
../../home/username
../../../home/username
(katalog macierzysty /
jest nadal /
)./././././.
(bieżący katalog w bieżącym katalogu w ...)./
(końcowe ukośniki są dozwolone dla katalogów)/home////username///
(podobnie jak wiele ukośników)Czy nie mylić ./program
z . program
. ./program
uruchamia plik w bieżącym katalogu z ustawionym bitem wykonania. . ./program
jest rzeczą bashową i można ją alternatywnie zapisać jako source ./program
odczytywanie poleceń bash z program
pliku w bieżącym katalogu i wykonywanie ich w bieżącej powłoce.
Jeśli zastanawiasz się, dlaczego możesz po prostu uruchomić gedit
zamiast, /usr/bin/gedit
a nie program
zamiast ./program
lub /home/username/program
, zobacz powiązane pytanie:
Oznacza zacząć od current directory path
.
Załóżmy, że masz coś path
takiego:
/usr/ /usr/bin/ /usr/local/bin
a wewnątrz /usr/bin/
znajduje się plik wykonywalny o nazwie yiic
.
Jeśli wydasz yiic
, uruchomi się ten w /usr/bin/
.
Wydając polecenie ./yiic
, każ systemowi zajrzeć do bieżącego katalogu tego pliku wykonywalnego.
/home/mysuser/
i nawiguję tam za pomocą cd /home/myuser
. Będąc w środku, wierzyłem, że robienie tylko yiic powinno działać, ponieważ zadzwoniłem, gdy byłem w tym katalogu. Ale mówi, że polecenie nie archiwizuje. Jeśli zrobię to samo i użyję ./, to będzie działać poprawnie ... Czy możesz wyjaśnić trochę więcej?
.
to specjalny plik w folderze, który możesz zobaczyć podczas robienia ls -la
w katalogu;)