OpenVPN 源变量不适用于 debian

il0*_*obs 5 variables bash openvpn

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

但是当我在 /etc/openvpn/easy-rsa/ 文件夹(脚本和 vars 文件上带有 chmod 775)中执行以下脚本时,它说“xxxx.sh: 3: xxxx.sh: source: not found: ”

#!/bin/bash
source ./vars
Run Code Online (Sandbox Code Playgroud)

当我写 . ./vars,它可以工作,但是如果我想做一个 ./clean-all 它说:

请首先获取 vars 脚本(即“source ./vars”) 确保您已编辑它以反映您的配置。

当我在与 . ./vars,它的工作原理。

感谢您的帮助(并为我的英语不好:/)

Jos*_*lly 3

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

$ . /etc/openvpn/easy-rsa/vars
$ /etc/openvpn/easy-rsa/clean-all
Run Code Online (Sandbox Code Playgroud)