Articles of 环境variables

不能从脚本中取消设置envvariables

我试图从脚本中取消所有的环境variables。 脚本运行良好,但如果我运行env它仍然显示所有的variables设置。 如果我从CLI运行命令,它的工作原理和variables未设置。 unset `env | awk -F= '/^\w/ {print $1}' | xargs` 有任何想法如何从脚本运行这个? 另外,有任何想法如何从脚本源/ etc / profile? 这也不pipe用。 我需要设置具有相同名称但不同path的variables,这取决于我的用户需要的实例。 稍后编辑: 好吧,我结束了这个(而不是优雅,但无论)解决scheme: . script 其中包含: unset `env | awk -F= '/^\w/ {print $1}'|egrep -v "HOSTNAME|TERM|SHELL|HISTSIZE|SSH_CLIENT|SSH_TTY|USER|LS_COLORS|KDEDIR|MAIL|PATH|INPUTRC|PWD|LANG|HISTIGNORE|SSH_ASKPASS|TEST|SHLVL|HOME|LD_ASSUME_KERNEL|LOGNAME|SSH_CONNECTION|LESSOPEN|HISTTIMEFORMAT|G_BROKEN_FILENAMES|_"|xargs` source env_variable_file 谢谢!

在Linux上的脚本中使用HOSTNAME和CURRENT_USER

假设我想编辑/etc/profile : PYTHONPATH = /home/CURRENT_USER/ 我如何有一个variables ,将自动填写当前用户? 主机名呢? 不是这些环境variables吗?

Linux(Ubuntu)环境variables,shell和安全性

我试图理解Ubuntu 10.04服务器上运行在Apache下的Web应用程序的安全和环境variables的一些概念。 我有几个应用程序,我想作为一个用户没有shell或密码运行(我明白,这是一个好主意,但我不是专家)。 其中一个应用程序是一个通过系统初始化脚本启动的Web应用程序,另一个是通过sudo和-u开关通过sudo行在特定情况下启动的实用程序。 每个应用程序都需要访问相同的一组环境variables。 我可以修改启动每个应用程序的脚本,并在那里设置环境variables,但是如果环境variables以某种方式为运行应用程序的用户设置,我更喜欢它。 我的问题是: 可以为没有shell的用户设置“每个用户”的环境variables吗? 我读过“ 在Debian上设置没有loginshell的服务的环境variables ”,但给定的解决scheme与修改我的每个应用程序脚本基本相同。 如果我不能为每个用户设置环境variables,那么与给用户一个shell相关的安全风险是什么? 如果有的话,对于这种可能普遍的情况,有什么替代scheme或build议?

APACHEconfiguration文件中的PHP setlocale等价物

我需要在法语区域显示date。 一个解决scheme是使用setlocale(LC_TIME, 'fr_FR'); 但我正在寻找直接在我的Apache服务器的configuration设置区域设置。 在/etc/httpd/conf/httpd.conf文件中,我试过了 <VirtualHost *:80> … SetEnv LC_TIME 'fr_FR' </VirtualHost> 没有任何影响。 我应该在哪个php或apacheconfiguration文件中定义LC_TIMEvariables?

如何使基于docker run args的docker内部有条件的Monit“check process”?

我想使Monit的“检查过程”有条件地基于envvariables工作。 这里是我想达到的伪代码(不是一个有效的监视configuration语法): [ -n "$run_foo" ] && check process foo …. 我的用例:我有一个docker镜像,像这样开始监视进程: CMD ["/bin/monit", "-c","/config/monit.conf"] Monit然后启动各种守护进程。 现在,我希望能够在运行时告诉哪些守护进程我想从这个映像创build的特定容器中启动,如下所示: docker run –env="run_foo=1;run_bar=1" … 我知道monit unmonitor和类似的args,但是我相信它们不符合我的目的。 想到这样的事情: start program="/bin/bash -c '[ -n \"$run_foo\" ] && /bin/foo .." 但是,似乎会导致监控不断尝试启动和监控不应该开始的事情。 我意识到使用不同的监视器configuration文件或使用不同的泊坞窗图像的可能性 – 这些不符合答案。 其他想法赞赏。

在FreeBSD上的pkg_add环境

假设你想添加一个包foo,但是当你通过调用pkg_add时: pkg_add -r foo 你得到一个错误: Error: Unable to get ftp://…/foo.tbz: File unavailable … 这不是一个问题,因为根据pkg_add的手册页,你所要做的就是将PACKAGEROOT环境variables设置为foo的根目录: PACKAGEROOT=ftp://root/to/package 不是那么快! 这是一个问题 – 这是行不通的! 如果您不导出PACKAGEROOT,那么pkg_add将使用其默认位置并导出PACKAGEROOT会给出错误: pkg_add: can't stat package file 'foo' 设置PACKAGESITEvariables时也是如此。 现在,我已经解决了这个问题: pkg_add -r ftp://my/package/root/foo.tbz 工作正常。 不过,我有两个问题: 什么can't stat package file 'foo'是什么意思? 为什么这不像广告? 对于感兴趣的,我试图安装启蒙时遇到这个问题。 端口版本是旧的,我不想编译,因为这需要一段时间。 我通过不同的terminal会话独立设置PACKAGEROOT和PACKAGESITE: export PACKAGEROOT=ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.0-release/x11-wm 和 export PACKAGESITE=ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.0-release/x11-wm/ 但都没有工作。

/ proc / pid / environ缺lessvariables

谷歌今天没有给予这个爱,所以我转向专家… 目前,我正在依靠Linux(RHEL 4)中的/ proc / pid / environ特性来检查特定的环境variables。 麻烦的是,似乎某些环境variables没有出现在那里出于某种原因。 例: create some test vars: $ export T_1=testval TEST_1=testval T=testval TESTING_LONGEST=testval open a subshell: $bash $ cat /proc/self/environ|tr "\0" "\n"|grep testval TESTVARIABLE_LONGEST=testval T=testval 嗯… T_1和TEST_1去了哪里? 什么规则pipe理这个奇怪的宇宙? 在此先感谢,乔希 更新: 我已经能够在不同的RHEL版本和不同的用户上重现这个问题,但是它似乎是Bash独特的(我正在使用3.0)。 ksh不显示此行为。

我该如何设置一个对当前会话有效的Windows用户环境variables?

我正在尝试设置Windows用户环境variables,然后通过batch file或脚本启动应用程序。 但是,直到用户注销并重新login之后,环境variables才会设置为适当的值。 (我认为更准确的描述是新的值在下一次login之后才能被应用程序使用。) 有没有办法在用户的环境中设置一个variables,以便它立即可用? 我这样做是因为这个程序的function可以通过环境variables来控制,用户在不同的时间需要不同的function。 由于许可限制,如果可能,我需要dynamic设置它。 谢谢, 格雷厄姆

如何在PATH中使用环境variables(如%CommonProgramFiles%),并让它们由services.exe识别?

我正在尝试通过将%CommonProgramFiles%\xxx\xxx附加到现有path来将C:\Program Files\Common Files\xxx\xxx到系统PATH环境variables中。 重新启动后,我打开一个命令提示符并检查PATH。 它正确扩展。 但是,从Sysinternals使用Process Explorer查看services.exe上的环境variables时,它显示未扩展的版本。 巧合的是,使用%SystemRoot%的path展开并被识别得很好。 我试过通过系统属性的环境variables窗口改变PATH,并通过直接registry处理,似乎都没有工作。 是否有可能使用其他的环境variables,除了PATH中的%SystemRoot% ,并有services.exe明白吗?

Sudo重置环境variables

每当我使用sudo命令,我的环境variables都不会被保留下来。 我已经尝试通过删除env_reset规范来修改sudoers文件。 #Defaults env_reset 我也尝试使用env_keep添加我想要的envvariables。 Defaults env_keep += "DYLD_LIBRARY_PATH" 我正在使用Mac Snow Leopard。 有什么我失踪了吗?