Что означает эта команда в Unix? - PullRequest
1 голос
/ 07 марта 2011

Что это значит в Unix, когда вы используете . ./<filename>?

Спасибо за помощь

Ответы [ 4 ]

3 голосов
/ 07 марта 2011

". ./?"будет пытаться запустить программу под названием '?'который будет находиться в текущем каталоге и будет запущен в текущей оболочке.

Первая точка означает «запустить в текущей оболочке» (а не порождать новую). «./» означает «текущий каталог 'и'? 'будет означать исполняемый файл с именем '?'должен был существовать.

1 голос
/ 07 марта 2011

Команда . или source считывает данный файл в текущую оболочку. То есть в основном данный файл представляет собой сценарий оболочки, который запускается с помощью ввода . filename, однако использование . (или source, что эквивалентно) отличается от обычного запуска файла в качестве сценария оболочки тем, что он не порождает подоболочку и, таким образом, сохраняет переменные, которые экспортируются сценарием. Поэтому, если скрипт устанавливает и экспортирует переменные, они все равно будут установлены после его завершения.

1 голос
/ 07 марта 2011

Запуск . для имени файла запускает команды в файле, как если бы вы вводили их в командной строке оболочки.В отличие от сценария оболочки, переменные среды (и аналогичные), произведенные файлом, сохраняются и после запуска файла;изменения, внесенные сценарием оболочки, отменяются после его завершения.

0 голосов
/ 07 марта 2011

source или . принимают файл в качестве параметра.Каждая строка кода в этом файле выполняется.Поэтому я не думаю, что

. ./

сработает.

$ . ./
-bash: .: ./: is a directory
$ echo "echo Hello" > out
$ . out
Hello
$ source out
Hello
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...