OpenVPN Source vars没有使用debian

时间:2014-04-30 13:37:00

标签: bash variables openvpn

我必须创建一个脚本来自动设置OpenVPN服务器。 在这个脚本中,我需要在/ etc / openvpn / easy-rsa /

中获取vars文件

但是当我在/ etc / openvpn / easy-rsa /文件夹中执行以下脚本时(在脚本和vars文件上使用chmod 775),它会显示" xxxx.sh:3:xxxx .sh:来源:未找到:"

#!/bin/bash
source ./vars

当我写作。 ./vars,它有效,但是如果我想做一个./clean-all它会说:

请首先获取vars脚本(即" source ./vars") 确保您已对其进行了编辑以反映您的配置。

当我在同一个脚本中执行./clean-all时。 ./vars,它有效。

感谢您的帮助(抱歉我的英文不好:/)

1 个答案:

答案 0 :(得分:2)

当您source(或.)文件时,其中的所有命令都会被读取并执行 - 这包括变量赋值。但是,当进行变量赋值时,它仅发生在当前shell中。当您运行脚本时,会创建一个子shell - 因此脚本中的任何变量只能在子shell中显示,而不是父(调用)shell。这就是为什么它在同一个脚本中运行sourceclean-all时有效,如果你从命令行执行这两个操作它也应该有效,即:

$ . /etc/openvpn/easy-rsa/vars
$ /etc/openvpn/easy-rsa/clean-all