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