Jaka jest różnica między nazwą pliku a ./nazwa pliku w systemie Linux


10

Jaka jest różnica między filenamei ./filename? W jakich okolicznościach jedna jest preferowana względem drugiej?

Odpowiedzi:


18

W przypadku plików danych nie robi to różnicy - obie instrukcje będą odwoływać się do pliku danych w bieżącym katalogu. (Na przykład cat filenamei cat ./filenamesą semantycznie identyczne.)

To inna historia, jeśli nazwa pliku odnosi się do pliku wykonywalnego , tj. Jest pierwszą (lub nawet jedyną) rzeczą, którą wpisujesz w wierszu poleceń. ./filenameszuka pliku wykonywalnego w bieżącym katalogu i nigdzie indziej. filename, z drugiej strony, oceni zmienną środowiskową PATHi poszuka filenamew każdym katalogu w niej przechowywanym (który może, ale nie musi zawierać bieżący katalog).

./filename(lub dowolny inny /path/to/filename) jest zatem preferowany, gdy chcesz wykonać określony plik wykonywalny, a nie pierwszy znaleziony w ŚCIEŻCE.


6

Jeśli uruchamiasz program, filenamemówi o uruchomieniu pierwszego z nich, $PATHa drugi mówi o uruchomieniu tego z bieżącego katalogu.

Jeśli używasz tego pliku jako argument do programu jak w do_something filenamelub do_something ./filenamewtedy one oznaczają to samo.


5

Masz na myśli wykonywanie poleceń, prawda?

Istnieje zmienna środowiskowa, PATHktóra zawiera niektóre katalogi systemowe, oddzielone średnikiem. Po wpisaniu commandsystem szuka w tych katalogach kolejności, w jakiej są one określone, aby znaleźć plik wykonywalny o nazwie <polecenie> Jeśli go znajdzie, próbuje go wykonać. Możesz zobaczyć swoją ŚCIEŻKĘ echo $PATHw trybie bash. Na przykład:

$ echo $ PATH
/ sbin: / bin: / usr / sbin: / usr / bin: / usr / games: / usr / local / sbin: / usr / local / bin: / home / ivanatora / bin: / usr / local / kde4 / bin: / usr / local / kde4 / bin

Podczas pisania ./filenamepodajesz dokładną ścieżkę: bieżący katalog. Możesz zobaczyć, że bieżący katalog rzadko znajduje się w twojej $ PATH (ze względów bezpieczeństwa). Więc jeśli chcesz wykonać plik z bieżącego katalogu, użyj ./filename.

Aby wykonać plik według jego ścieżki (szczególnie jeśli nie ma go w $ PATH), możesz także wpisać <path>/file:

/ sbin / ifconfig



1

To zależy, w jakich okolicznościach go użyjesz.

Jako argument, np. „Nazwa pliku programu”, to zależy od programu, ale ogólnie są one identyczne.

Jako nazwa programu, np. „Argumenty nazwy pliku”, następnie „argumenty nazwy pliku” przeszukuje ścieżkę PATH w celu znalezienia pliku binarnego, a „argumenty nazwy pliku .//” użyją programu w bieżącym katalogu. Jest to oczywiście przydatne, jeśli. nie znajduje się w ŚCIEŻCE, ale warto go również użyć, nawet jeśli. znajduje się na ścieżce, być może dlatego, że pasuje do wcześniejszego wpisu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.