Какова цель / польза от размещения «./» в начале пути?

Есть ли когда-либо преимущество перед предыдущим путем с ./ (точечная косая черта)?

В большинстве случаев cd ./home эквивалентен cd home (а также cd ./././././home ). Есть ли когда-нибудь случай, когда эти два пути НЕ будут оцениваться по тому же пути? Есть ли какая-то польза или недостаток для наличия или отсутствия наличия ./ в начале пути к папке или файлу?

Что, если изнутри программы или скрипта я хотел открыть файл конфигурации, я жестко кодирую файл для открытия, если это так:

resource/config.txt

ИЛИ

./resource/config.txt

Предоставляет ли POSIX (или общие реализации Unix) какую-либо смысловую разницу между открытием этих двух путей?

3 Solutions collect form web for “Какова цель / польза от размещения «./» в начале пути?”

Есть по крайней мере две причины ./something .

  1. У вас есть программа, которую вы хотите запустить. Это неудобно назвать что-то вроде «test» или «cat» или «ps». Обычно оболочки ищут имена программ в каталогах в PATH среды PATH . Чтобы выполнить test , вам нужно ввести ./test , иначе /usr/bin/test или некоторые из них будут выполнены. Это может быть очень запутанным.

  2. У вас его нет . в вашей PATH среды PATH потому что вы не хотите случайно запускать программу, пока вы poking вокруг файловой системы. Действительно ужасные люди могли оставить сценарий ls в каком-то каталоге. Файл ls может содержать rm -rf $HOME . Если у вашего PATH есть "." в нужном месте, ужасный человек может обмануть вас в удалении всего в вашем домашнем каталоге. Вы можете конечно поставить «.» как последняя запись в PATH , но можно придумать обстоятельства, в которых «.» в PATH вызывает проблемы. Таким образом, для запуска программы, исполняемый файл которой находится в текущем рабочем каталоге, вы должны префикс своего имени файла «./».

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

 vagrant@host:~$ pwd /home/vagrant vagrant@host:~$ mkdir foobar vagrant@host:~$ mkdir foobar/~ vagrant@host:~$ cd foobar vagrant@host:~/foobar$ cd ./~ vagrant@host:~/foobar/~$ pwd /home/vagrant/foobar/~ vagrant@host:~/foobar/~$ cd ~ vagrant@host:~$ pwd /home/vagrant vagrant@host:~$ cd foobar vagrant@host:~/foobar$ cd ~ vagrant@host:~$ pwd /home/vagrant vagrant@host:~$ 

Как указали @DopeGhoti @Wildcard и другие, иногда очень удобно иметь конкретную информацию о том, в каком каталоге вы находитесь и какова ваша цель. Конструкции ./ и ../ обеспечивают это.

  • Что такое "Устройство: 802h / 2050d" означает inode?
  • Создание виртуальной файловой системы для загрузки Linux
  • Лучшие параметры файловой системы ext4 для обработки образов виртуальных дисков
  • Внешняя команда для принудительного сброса потока
  • Почему удаление больших файлов из tmpfs не мгновенно?
  • Как работает файловая структура Linux?
  • На устройстве не осталось места - Debian
  • как я могу рекурсивно удалять пустые каталоги в моем домашнем каталоге?
  • Как монтировать файловую систему ufs при тестировании Debian?
  • Где хранятся таблицы i-node?
  • найти файл из папки с большим количеством подпапок
  • Interesting Posts

    Переключение выходных стоков / движущихся аудиопотоков – но некоторые приложения по-прежнему используют старую раковину!

    Как автоматически выполнить «netctl start tq84-wifi» при загрузке?

    firewalld принимает ответ на запрос многоадресной DNS из эфемерного порта

    Различные сценарии, которые я вижу, не будут проходить через python

    Что такое запрос IGMP?

    Кнопки мультимедиа для наушников как вход HID

    Как добавить некоторую строку в сочетании с шаблоном в конце строки с шаблоном

    Как использовать опцию из руководства для netflow?

    как использовать / log fS на двух удаленных серверах

    фильтрация на pgrep для ограничения результата

    Объединение двух переменных приводит их в действие в Windows

    Клавиатура USB (HID) не отвечает в Linux, а в grub

    Как узнать, почему NetworkManager не смог запустить VPN-соединение?

    Альтернатива `pkill` или` pgrep -f` на cygwin?

    Как отключить запрос пароля root при извлечении USB-накопителей?

    Linux и Unix - лучшая ОС в мире.