问题标签 [env]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - %ENV 不起作用,我无法使用共享库
我不能%ENV
在我的 Perl 脚本上使用 var 来使用 Oracle 库。
如果我打印$ENV{'ORACLE_HOME'}
并且$ENV{'LD_LIBRARY_PATH'}
一切正常,但是当我运行我的脚本时出现错误:
install_driver(Oracle) 失败:无法为模块 DBD::Oracle 加载“/usr/local/lib64/perl5/auto/DBD/Oracle/Oracle.so”:libclntsh.so.10.1:无法打开共享对象文件:否这样的文件或目录在 /usr/lib64/perl5/DynaLoader.pm 第 200 行。在 (eval 3) 第 3 行编译在 (eval 3) 第 3 行的 require 中失败。可能所需的共享库或 dll 没有安装在预期的位置在 persistence.perl 第 22 行
在网上搜索我发现在 Perl 上设置环境变量的正确方法是使用%ENV
哈希。
导出ORACLE_HOME
并LD_LIBRARY_PATH
通过 unix shell ( export LD_LIBRARY_PATH=...
) 它可以正常工作。有什么建议吗?
perl - 将环境变量传递给 fcgi (perl)
我有一个运行 mod_fcgid 的 apache 2 网络服务器。CGI 脚本通过传递一些环境变量然后执行 perl 程序来执行,例如:
这在没有 fcgi 的情况下运行良好,但是在启用它时(例如,通过 .htaccess 中的“SetHandler fcgid-script”),TEST_VAR 没有通过(甚至在第一次运行时也没有)。除此之外,fcgi 似乎确实在工作。
有什么想法或建议的方法吗?出于各种配置原因,我更喜欢如上所述在外部设置环境,但这不是强制性的。
谢谢!
java - 从 perl 调用 system() 或 IPC::Run3 命令似乎没有传递环境变量 ($ENV{JAVA_HOME})
我一直在努力从 perl 启动一个 java 进程。问题的根源是 java 进程缺少JAVA_HOME
导致ClassNotFoundException
.
我开始使用IPC::Run3
它是因为它相对优雅的 STDIN/STDOUT 重定向。
假设IPC::Run3
会使用%ENV
,我尝试添加$ENV{JAVA_HOME}
.
当那不起作用时,我尝试做system()
. 那没有用,所以最后,我让它工作了system("JAVA_HOME=/path/to/java && /path/to/java_program");
我的测试程序如下。自然我会取消注释正确的块来测试适当的调用。
这是运行 run3 的输出:
第一个 system() 调用的输出:
最后,第三个系统调用——唯一有效的!——使用内联设置的环境变量:
最后的问题:除了必须在 system() 调用中设置环境外,将环境变量传递给 IPC::Run3 或 system() 调用的适当方法是什么?
(注意:%ENV 的输出被截断为仅相关的行... PATH、SHELL、_ 等与省略的问题无关的行)
如果它是相关的:
php - PHP 使用 $_ENV 而不是 $_SESSION
使用 $_ENV 保存全局脚本变量而不是使用 $_SESSION 有什么危险吗?我了解 2 个超全局变量之间的区别,但不确定在 $_SESSION 上使用 $_ENV 的影响?$_SESSION 是否提供更多安全性?
python - 为什么使用 env 设置初始环境会阻止我在 Ubuntu 上启动 Python 脚本?
我有一个测试脚本,例如“test.py”,我想让它在脚本开始之前使用特定的环境变量集执行:
运行它通常按预期工作:
但是,如果我将其作为程序运行:
该字符串从不打印,而是执行停止,“top”报告一个名为“test.py”的进程正在使用 100% CPU。
这只发生在我的 Ubuntu 机器上,在 OS X 上似乎没问题。
原因是最终我想通过设置使特定脚本始终在 32 位 Python 中运行:
在文件的顶部。但是,如果这意味着脚本不会在 Linux 机器上执行,那就不行了。我发现无论调用什么指定的环境变量都会产生类似的效果。但是,如果没有设置环境变量:
脚本运行得很好:
这是 Python 或 中的错误env
,还是我做错了什么?
perl - 在 bash 脚本中使用源代码
我已经使用 perlbrew 在 CentOS 5.x 服务器上安装了一些需要 Perl 5.010 的代码,它需要这两行
和
要在我的 /usr/bin/env 中有 perl 5.010 之前在 shell 中执行,所以我尝试创建以下可执行 bash 脚本以最小化这两个步骤./setEnv.sh
shell - 列出busybox中的所有环境变量名
具有多行值的环境变量可能会混淆env
的输出:
在这种情况下,我不能只使用awk -F=
提取所有名称,因为它显示错误的名称C
和E
:
然后我发现env
支持标志-0
以 0 字节而不是换行符结束每个输出行,因此使用sed
我可以切断以下值bash
:
但是 BusyBox 的版本env
不支持flag -0
。还有另一种方法吗?
emacs - 如何从 eLisp 调用 env 并正确转义目标程序的路径?
我正在尝试做的事情如下:
即我想pj-path
在填充了一些变量的环境中调用一个程序。
在(format "'%s'" pj-path)
我尝试单引号和双引号的行中 - 但env
不进行路径扩展,如果它被引用,它将把它当作一个字符串,而不是找到文件。但是,如果它没有被引用,那么它将把直到第一个空格之前的字符串部分解释为程序的路径。
如果我转义空格(如在它们前面加上反斜杠),它似乎可以工作,但可以肯定的是,空格不是唯一会混淆执行命令的 shell 的字符。
那么,在 eLisp 中转义应该传递给 env 的可执行文件名称的正确方法是什么?
shell - 未知路径的 Shell 脚本 shebang
是否可以在不知道要执行的程序路径的情况下指定 shebang 行?
也许不指定路径
或指定几个选项
跨平台解决方案的加分项(各种风格的 linux、BSD、OSX 等...)