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