OpenVPN Source vars не работает на Debian

Мне нужно создать скрипт для автоматической установки сервера OpenVPN. В этом скрипте мне нужно найти файл vars в /etc/openvpn/easy-rsa/

Но когда я выполняю следующий скрипт в папке /etc/openvpn/easy-rsa/ (с chmod 775 в файле script и vars), он говорит: "xxxx.sh: 3: xxxx.sh: source: not found: "

#!/bin/bash
source ./vars

Когда я пишу./vars, это работает, но потом, если я хочу сделать./clean-, все это говорит:

Пожалуйста, сначала поставьте скрипт vars (то есть "source ./vars"). Убедитесь, что вы отредактировали его для соответствия вашей конфигурации.

Когда я делаю./clean- все в том же сценарии, что и../vars, это работает.

Спасибо за вашу помощь (и извините за мой плохой английский:/)

1 ответ

Решение

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

$ . /etc/openvpn/easy-rsa/vars
$ /etc/openvpn/easy-rsa/clean-all
Другие вопросы по тегам