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, lsa ty cddo 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/namesoznacza 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ć pwdpolecenia. Ponadto, jeśli użyjesz -aflagi 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ć ./programz . program. ./programuruchamia plik w bieżącym katalogu z ustawionym bitem wykonania. . ./programjest rzeczą bashową i można ją alternatywnie zapisać jako source ./programodczytywanie poleceń bash z programpliku w bieżącym katalogu i wykonywanie ich w bieżącej powłoce.
Jeśli zastanawiasz się, dlaczego możesz po prostu uruchomić geditzamiast, /usr/bin/gedita nie programzamiast ./programlub /home/username/program, zobacz powiązane pytanie:
Oznacza zacząć od current directory path.
Załóżmy, że masz coś pathtakiego:
/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 -law katalogu;)