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

Этот вопрос уже имеет ответ здесь: зачем мне вводить `. /` перед выполнением программы в текущем каталоге? 10 ответов

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

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

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

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

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

6 ответов

Позвольте мне попытаться объяснить это, чтобы ответить на ситуацию 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. Кроме того (спасибо Сергею), я бы добавил, что при использовании globstar для работы с файлами следует использовать ./, потому что это безопаснее. Скажем, вы запускаете что-то вроде ls *, и у вас есть имя файла, например -231.txt. Команда ls будет думать, что -2 - это командный переключатель, но есть такой переключатель на ls, поэтому вы получите сообщение об ошибке. С ls ./* он будет работать без проблем. Таким образом, ./ используется не только для cd где-то, либо работает скрипт
6
ответ дан 22 May 2018 в 18:15
  • 1
    Итак, cd folder_name и cd ./folder_name - это то же самое право? – Aruka J 21 September 2017 в 16:52
  • 2
    Да, есть одно и то же! – George Udosen 21 September 2017 в 16:54
  • 3
    Очень хороший ответ. Еще одна вещь, которую я бы добавил, заключается в том, что при использовании globstar для работы с файлами следует использовать ./, потому что это безопаснее. Скажем, вы запускаете что-то вроде ls *, и у вас есть имя файла, например -231.txt. Команда ls будет считать, что -2 - это командный переключатель, но на ls есть такой переключатель, поэтому вы получите сообщение об ошибке. С ls ./* он будет работать без проблем. Итак, ./ используется не только для cd где-то, либо для запуска скриптов. – Sergiy Kolodyazhnyy 21 September 2017 в 19:24

Позвольте мне попытаться объяснить это, чтобы ответить на ситуацию 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. Кроме того (спасибо Сергею), я бы добавил, что при использовании globstar для работы с файлами следует использовать ./, потому что это безопаснее. Скажем, вы запускаете что-то вроде ls *, и у вас есть имя файла, например -231.txt. Команда ls будет думать, что -2 - это командный переключатель, но есть такой переключатель на ls, поэтому вы получите сообщение об ошибке. С ls ./* он будет работать без проблем. Таким образом, ./ используется не только для cd где-то, либо работает скрипт
6
ответ дан 18 July 2018 в 06:28

Позвольте мне попытаться объяснить это, чтобы ответить на ситуацию 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. Кроме того (спасибо Сергею), я бы добавил, что при использовании globstar для работы с файлами следует использовать ./, потому что это безопаснее. Скажем, вы запускаете что-то вроде ls *, и у вас есть имя файла, например -231.txt. Команда ls будет думать, что -2 - это командный переключатель, но есть такой переключатель на ls, поэтому вы получите сообщение об ошибке. С ls ./* он будет работать без проблем. Таким образом, ./ используется не только для cd где-то, либо работает скрипт
6
ответ дан 24 July 2018 в 18:36

Когда вы используете cd, это означает, что вы хотите изменить каталог, поэтому ОС будет искать дочерние элементы текущего каталога. При запуске программы «./» очищает, что это программа, а не команда.

0
ответ дан 22 May 2018 в 18:15

Когда вы используете cd, это означает, что вы хотите изменить каталог, поэтому ОС будет искать дочерние элементы текущего каталога. При запуске программы «./» очищает, что это программа, а не команда.

0
ответ дан 18 July 2018 в 06:28

Когда вы используете cd, это означает, что вы хотите изменить каталог, поэтому ОС будет искать дочерние элементы текущего каталога. При запуске программы «./» очищает, что это программа, а не команда.

0
ответ дан 24 July 2018 в 18:36

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

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