На этот вопрос уже есть ответ здесь:
Я смотрю несколько руководств о том, как перемещаться по файловой системе, но независимо от того, какой учебник я смотрю, есть одна вещь, на которую, кажется, никто не отвечает.
Я понимаю, что .
- текущий каталог. Я понимаю, что /
либо корневой каталог, либо просто конец текущего каталога.
Так почему же, если я хочу запустить программу в текущем каталоге, мне нужно сделать ./ ProgramName
? Это просто потому, что ProgramName
может находиться в $ PATH
, и я должен указать, что я хочу запустить версию в текущем каталоге? Почему Ubuntu не запускает автоматически версию текущего каталога, если в $ PATH
нет эквивалента?
И если да, то почему мне разрешено опускать ./
при перемещении по каталогам ? Например, я могу просто сделать cd DropBox
из моего домашнего каталога. Я также могу сделать cd ./DropBox
, и это, кажется, работает, но почему не требуется ./
?
Позвольте мне попытаться объяснить это, ответить cd
ситуация. Теперь мы имеем .
-- current directory
, затем /
-- root
каталог, теперь помните что /
используется в Linux для указания absolute path
и не относительный путь, когда это запускает адрес пути. Теперь в Вашем случае;
Когда Вы используете cd folder_name
Вы используете relative path
адресуйте к тому (текущему) каталогу так никакая потребность уже указать путь, Ваш там.
Когда Вы используете cd ./folder_name
это говорит, перемещают меня в папку с именем folder_name
в токе (.
) каталог.
Вы запускаете программу в текущем каталоге .
, с ./program.sh
говорит- don't bother searching in the standard paths
посмотрите в токе .
папка. Это - стандартная установка Linux.
Кроме того (благодаря Sergiy), другая вещь, которую я добавил бы, является этим при использовании globstar
для контакта с файлами, нужно использовать ./
потому что это более безопасно. Скажите выполнение чего-то как ls *
, и у Вас есть имя файла как -231.txt
. Команда ls будет думать это -2
командный коммутатор, но существует на переключателе как этот на ls, таким образом, Вы получите ошибку. С ls ./*
это будет работать без проблем. Так, ./
используется не только для cd
где-нибудь или запущение скрипта
При использовании CD это конкретно означает, что Вы хотите изменить каталог следовательно, ОС изучит детей текущего каталога. Когда запущение программы, '. /' очищает это, это - программа и не команда.