2015-05-06 2 views

ответ

5

./ не является командой, она является частью пути. При выполнении команды исполняемый файл должен либо находиться в каталоге, указанном в переменной среды $PATH, либо указать путь явно. ./cmd означает запуск исполняемого файла cmd в текущем каталоге.

+0

и вы можете поместить '. /', Если вы действительно этого хотели. (Не рекомендуется) –

+0

@JID Я не понимаю ваш комментарий - что вы имеете в виду? –

+0

Похоже, что половина моего комментария исчезла. Предполагалось сказать, что 'put ./ в вашей переменной PATH'. –

3

. - текущий каталог.

./file относительный путь к файлу из текущего каталога, тогда как file просто голое имя, что оболочка должна искать (в $PATH).

Это ничем не отличается (в понятии) от /bin/sh, и т.д.

0

./ это не команда. как ни странно . это настоящее имя каталога, это связано с текущей директории. Таким образом, текущий каталог имеет (по крайней мере) два имена, тот, который вы обычно используете, и .. Все каталоги имеют t его, даже в Windows.

/ является символом разделителя каталогов, используемым в Linux и UNIX.

Предположим, что ваш текущий каталог - /home/pete. Вы можете запустить программу, говоря:

/home/pete/program_name 

или:

./program_name 

Они означают то же самое. Конечно, вы не всегда нуждаетесь в таких программах, как ls, потому что эти программы находятся в каталоге, указанном в переменной окружения PATH. echo $PATH, чтобы увидеть это.

Я сказал, что в каталогах есть как минимум два имени. Если в подкаталоге есть подкаталог, он также известен как ... Поэтому каталог имеет два имени (hard-links) плюс один для каждого подкаталога. Проверьте команду ls -l:

mkdir adir 
ls -ld adir 
drwxr-xr-x 2 clivedarke staff 68 6 May 17:25 adir 
ls -ld . 
drwxr-xr-x+ 74 clivedarke staff 2516 6 May 17:25 . 

Посмотрите на вторую колонку? 2 для нового каталога (adir). Вы можете видеть, что мой текущий каталог (.) имеет 74 имени (жесткие ссылки) и поэтому означает 72 подкаталога.

Смежные вопросы