【问题标题】:OpenVPN Source vars not working on debianOpenVPN Source vars 无法在 debian 上运行
【发布时间】:2014-04-30 13:37:00
【问题描述】:

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

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

#!/bin/bash
source ./vars

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

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

当我在同一脚本中执行 ./clean-all 时,而不是 . ./vars,它可以工作。

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

【问题讨论】:

    标签: bash variables openvpn


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!我现在明白了:)
    猜你喜欢
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 2018-08-09
    • 1970-01-01
    • 2022-11-03
    相关资源
    最近更新 更多