- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过下面提到的 3 种方法在 ruby 代码中设置一个环境变量。像这样:
one = `setenv HEMANT2 \"hi\"`
two = %x[ export HEMANT2=hi1]
there = system("setenv HEMANT \"hi\"")
这 3 个似乎都不起作用。我正在研究 tcsh。想知道我错过了什么吗?
最佳答案
环境变量属于一个进程并被传递给他们的 child 。上面的所有行都创建了一个子 shell 进程。环境变量在子 shell 进程中更改,而不是在其父 Ruby 进程中更改。
相反,使用 ENV
class .
ENV['HEMANT2'] = 'hi'
这将在您的 Ruby 进程中设置 HEMANT2
环境变量。但它不会更改您的 shell 中的环境变量。
$ cat ~/tmp/test.rb
ENV['HEMANT2'] = 'hi'
$ ruby ~/tmp/test.rb
$ echo $HEMANT2
$
同样,因为环境变量属于一个进程,并由其子进程继承。 ruby ~/tmp/test.rb
fork 一个你的 shell 的子进程。它不能设置其父级的环境变量。
您可以使用 shell 脚本来完成,但前提是您源
它。 source
不会创建子进程,它会在您的 shell 中运行命令。
$ cat test.sh
#!/bin/sh
HEMANT2=hi
$ sh test.sh
$ echo $HEMANT2
$ source test.sh
$ echo $HEMANT2
hi
这仅适用于为您的 shell 编写的 shell 脚本。
关于ruby - 如何在 ruby 代码中执行 setenv 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64641827/
我有一个简单的 std::setenv 调用,它在我的 gcc 下的 Linux 发行版上运行良好。但是,在我的 Mac OS X 上使用 clang 时,出现以下错误。 error: no memb
我们有一个正在运行的 Team City Build Server,并且想要编译一个 Visual C++ 项目。到目前为止,这很容易,因为我已经使用 Windows SDK 设置了 Windows
获取 在初始化程序中将类型表达式列表视为复合表达式在这两个函数调用上 - char itoa(new_total, new_total_ch, 10); int setenv("COU
我的学校要我实现setenv() 标准c库函数的行为。我不允许为此实现使用 setenv()。我该怎么做? 最佳答案 在 C 编程语言的许多实现中,尤其是在 POSIX 上,可以从 environ 全
我正在使用 C++ 和 setenv 设置变量,如下面的程序所示: setenv("TEST", "$HOME/test", 1); char* val = getenv("TEST"); print
在 Linux 中使用二进制环境变量时,我发现了一些奇怪的行为,似乎某些单个字节是错误的。我仔细检查了一下,似乎某些字节在提供给 setenv() 时总是会被错误地“转换”。看看这个: #includ
我在这里阅读了几篇文章,但仍然对 setenv() 的方式感到困惑作品: linux-where-are-environment-variables-stored where-is-the-envir
在我的.htaccess中我设置: SetEnv APPLICATION_ENV development 我想检查 APPLICATION_ENV 是否等于 development 然后运行 ap
我正在尝试使用 setenv() 设置新的环境变量。 但我注意到 setenv() 函数仅在我使用环境“extern char **environ”时设置我的新环境变量 但我想使用 main() 的参
所以我正在尝试构建一个简单的 shell,它可以添加、删除、获取和打印环境。我知道来自父进程的环境拷贝是通过 C++ 程序中的 int main() 获得的,但是在调用 setenv 之后,环境拷贝是
我无法设置 setenv.sh 文件正常工作。谁能帮我在服务器上设置它。 SETENVPATH="${CATALINA_BASE:-$CATALINA_HOME}" if [ -r "$SETENVP
我想通过虚拟机选项修改xml文件。 所以我这样写setenv.sh。 export JAVA_OPTS="$JAVA_OPTS -server -Drun.my_own_property=my_own
有没有办法使用 C 中的函数更改 pragma omp for 循环中的 schedule 类型?我试图在并行语句之前执行 setenv("OMP_SCHEDULE", "guided", 1);,但
我需要用户在文本文件中定义我的程序所需的所有环境变量,如下所示。 MyDLLPath = C:\MyDLLPath 我的选项 = 选项 1 PATH = %MyDLLPath%;%PATH%; 在我的
我正在为系统编程类(class)开发自定义 shell。我们被指示实现内置的 setenv() 和 unsetenv() 命令,并提示检查 putenv()。 我的问题是 setenv(char*,
我在 Linux 中开发了一个 Tcl/Tk 脚本工具。为了运行该工具,每次我都需要在 shell 中像这样设置环境变量: setenv LD_LIBRARY_PATH /opt/lsf/9.1/li
我有下面的方法,它正确地将 ret 值设置为 0(表示在 setenv 中成功),但是当我检查是否实际设置了这个环境变量时,它不存在。为什么会这样? void Class::mysetenv(cha
我编写了以下 C 代码来将环境变量设置为 \x09。但是当我使用 echo $EGG | hexdump,我看到它将它设置为 00。只有当第一个半字节为零时才会出现此问题。知道哪里出了问题吗? cha
我有一个简单的测试项目,期望在运行时打印 goroutine 调度消息。 从 Goland 配置设置 env 它可以工作。但它不是来自下面的代码,该应用程序不会打印调度信息。有没有人解释一下这里发生了
我在 Linux 中使用 tcsh 终端。在我通常使用的另一个终端中,我将一些许可证文件的路径设置如下: export PATH="$PATH:$MODEL_TECH" Tcsh shell 无法
我是一名优秀的程序员,十分优秀!