Какова цель / польза от добавления «./» в начало пути? [дубликат]

&& является условным оператором. Он выполнит команду справа, если и только если команда слева успешно завершилась. Поскольку вы выполняете команду слева в фоновом режиме, ее код возврата не может быть определен, и все ломается и не работает должным образом.

Не используйте &. Вы должны либо выполнить command1 & command2 & command3, либо ( command1; command2; command3 )&. Второй будет выполнять все команды последовательно в подоболочке, которая выполняется в фоновом режиме.

1
15.12.2016, 23:43
3 ответа

Есть как минимум две причины сделать ./ что-то .

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

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

4
27.01.2020, 23:12

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

3
27.01.2020, 23:12
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 и другие, иногда полезно очень точно указать, в каком каталоге вы находитесь и в каком ваша цель. Конструкции ./ и ../ обеспечивают это.

2
27.01.2020, 23:12

Теги

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