Замена для источника в ш - PullRequest
       12

Замена для источника в ш

56 голосов
/ 19 января 2011

Мне нужно установить переменные окружения, обычно мы делаем это с помощью

source script.sh

Но теперь я автоматизирую его во время процесса загрузки, и он выглядит как корневой загрузчик по умолчанию с оболочкой sh. Как мне получить этот скрипт в sh?

1 Ответ

80 голосов
/ 19 января 2011

Команда точки '.' является эквивалентом команды C Shell (и Bash) source. Он определяется POSIX (см. dot) и поддерживается оболочками Борна и Корна (и, я полагаю, zsh).

. somefile

Обратите внимание, что оболочка ищет файл, используя $PATH, но файл должен быть только читаемым, а не исполняемым.

Как отмечено в комментариях ниже, вы, конечно, можете указать относительный или абсолютный путь к файлу - любое имя, содержащее косую черту, не будет искать при использовании $PATH. Итак:

. /some/where/somefile
. some/where/somefile
. ./somefile

все можно использовать для поиска somefile, если он существует в трех разных указанных местах (если вы можете заменить . на ls -l и посмотреть список файлов).

Педанты мира объединяются! Да, если текущий каталог является корневым каталогом, то /some/where/somefile и ./some/where/somefile будут ссылаться на один и тот же файл - с тем же реальным путем - даже без ссылок, символических или жестких, играющих роль (и так же будет ../../some/where/somefile ).

...