我必须创建一个脚本来自动设置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”)
确保已对其进行编辑以反射(reflect)您的配置。

当我在./clean-all中使用与。相同的脚本时。 ./vars,它可以工作。

感谢您的帮助(对不起我的英语不好:/)

最佳答案

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

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

关于bash - OpenVPN Source vars在debian上不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23389655/

10-13 07:19