Как узнать, когда использовать ./ или нет? [дубликат]

Я смотрю несколько руководств о том, как перемещаться по файловой системе, но независимо от того, какой учебник я смотрю, есть одна вещь, на которую, кажется, никто не отвечает.

Я понимаю, что . - текущий каталог. Я понимаю, что / либо корневой каталог, либо просто конец текущего каталога.

Так почему же, если я хочу запустить программу в текущем каталоге, мне нужно сделать ./ ProgramName ? Это просто потому, что ProgramName может находиться в $ PATH , и я должен указать, что я хочу запустить версию в текущем каталоге? Почему Ubuntu не запускает автоматически версию текущего каталога, если в $ PATH нет эквивалента?

И если да, то почему мне разрешено опускать ./ при перемещении по каталогам ? Например, я могу просто сделать cd DropBox из моего домашнего каталога. Я также могу сделать cd ./DropBox, и это, кажется, работает, но почему не требуется ./ ?

2
задан 21 September 2017 в 17:28

2 ответа

Позвольте мне попытаться объяснить это, ответить cd ситуация. Теперь мы имеем . -- current directory, затем / -- root каталог, теперь помните что / используется в Linux для указания absolute path и не относительный путь, когда это запускает адрес пути. Теперь в Вашем случае;

  1. Когда Вы используете cd folder_name Вы используете relative path адресуйте к тому (текущему) каталогу так никакая потребность уже указать путь, Ваш там.

  2. Когда Вы используете cd ./folder_name это говорит, перемещают меня в папку с именем folder_name в токе (.) каталог.

  3. Вы запускаете программу в текущем каталоге ., с ./program.sh говорит- don't bother searching in the standard paths посмотрите в токе . папка. Это - стандартная установка Linux.

  4. Кроме того (благодаря Sergiy), другая вещь, которую я добавил бы, является этим при использовании globstar для контакта с файлами, нужно использовать ./ потому что это более безопасно. Скажите выполнение чего-то как ls *, и у Вас есть имя файла как -231.txt. Команда ls будет думать это -2 командный коммутатор, но существует на переключателе как этот на ls, таким образом, Вы получите ошибку. С ls ./* это будет работать без проблем. Так, ./ используется не только для cd где-нибудь или запущение скрипта

6
ответ дан 2 December 2019 в 01:42

При использовании CD это конкретно означает, что Вы хотите изменить каталог следовательно, ОС изучит детей текущего каталога. Когда запущение программы, '. /' очищает это, это - программа и не команда.

0
ответ дан 2 December 2019 в 01:42

Другие вопросы по тегам:

Похожие вопросы: