标签: environment-variables

在 ubuntu 10.04 中编辑 /etc/environment 时可以使用变量吗?

我正在尝试引入一个变量并将其添加到 ubuntu 10.04 的全局路径中。根据官方文档, /etc/environment 是正确的地方。这是我的示例:

GRADLE_HOME=/etc/gradle-0.9-preview-3
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$GRADLE_HOME/bin"
Run Code Online (Sandbox Code Playgroud)

GRADLE_HOME 变量被添加到环境中,但它不会在 PATH 分配期间解释 $GRADLE_HOME 变量。硬编码它工作正常。没什么大不了的,但我想知道是否支持变量替换,或者是否有更好的方法来做到这一点?谢谢!

ubuntu environment-variables ubuntu-10.04

5
推荐指数
1
解决办法
4329
查看次数

我的 Path 环境变量中有两个文件夹,每个文件夹都包含同名的 EXE,哪个将运行?

假设我的 Path 环境变量中列出了两个文件夹,如下所示:

"C:\FolderA; C:\FolderB"

在每个文件夹中,我都有一个名为“testprog.exe”的程序。当我打开命令窗口并键入“testprog.exe”时。将运行哪一个?如果 FolderB 中的 testprog.exe 是 FolderA 中 testprog.exe 的更新版本怎么办?系统在乎吗?不确定哪一个会运行吗?发生什么了?

谢谢,

-罗伯特

windows-7 environment-variables

5
推荐指数
1
解决办法
2386
查看次数

MySQL 配置文件中的环境变量?

可以在Apache.conf文件中使用环境变量,但是对于 MySQL 来说,有没有办法在 MySQL 配置文件(my.ini/ my.cfg)中使用它们?

我能找到的最接近的是MySQL 手册页,其中提到了一些变量,但没有指出如何使用它们,或者它们是否是系统变量或内部变量。


就我而言,我需要一种方法来指定日志应存储在系统临时目录的子目录中,但无法弄清楚如何指示这一点。例如:

log-error="${temp}/MySQL_Logs/error.log"
innodb_log_group_home_dir="%temp%/PS_Logs/Logs/MySQL/"
?
Run Code Online (Sandbox Code Playgroud)

mysql configuration environment-variables

5
推荐指数
1
解决办法
4341
查看次数

sudo 不保留 TMPDIR

sudo 联机帮助页告诉我,我可以通过传递选项来保护环境-E,这在以下情况下不起作用$TMPDIR

> env | grep TMPDIR
TMPDIR=/localdata/tmp
> sudo env | grep TMPDIR
[no output]
> sudo -E env | grep TMPDIR
[no output]
Run Code Online (Sandbox Code Playgroud)

此选项未列入黑名单,即sudo sudo -V未将其列为“要删除的环境变量”。按照问题“如何指定根的环境变量”的答案中提出的方法,我尝试将其列入白名单,这是我的/etc/sudoers读物:

Defaults        env_reset
Defaults        env_keep = "TMPDIR"
Run Code Online (Sandbox Code Playgroud)

这也不起作用,它实际上甚至没有TMPDIR出现在白名单中(即“sudo sudo -V”打印为“要保留的环境变量”)。

(我运行的是 Ubuntu 10.04。)

sudo environment-variables tmp

5
推荐指数
1
解决办法
1393
查看次数

环境变量在Python中不可用

我有一个关于环境变量的非常有趣的问题,并且谷歌搜索没有显示任何有意义的结果:

$ echo $BUCKET && python -c "import os; print os.environ['BUCKET']"
mule-uploader-demo
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
    raise KeyError(key)
KeyError: 'BUCKET'
Run Code Online (Sandbox Code Playgroud)

所以我有一个在 bash 中可用但在 python 中不可用的环境变量。怎么会发生这种情况以及如何解决它?以下是一些其他详细信息:

  • source envvars.sh通过命令设置环境变量
  • envvars.sh文件仅包含如下所示的行:KEY=value
  • 我在 bash 和 zsh 中重现了这个
  • 如果我这样做export BUCKET=$BUCKET,它会起作用

python bash environment-variables

5
推荐指数
1
解决办法
5719
查看次数

在 cronjob 中加载用户环境变量

如何在 cronjob 中加载用户环境变量?


我有一个 cronjob,它应该在我的 Ubuntu 机器上每分钟启动一个脚本:

* * * * * /home/user/myscript.sh;
Run Code Online (Sandbox Code Playgroud)

在此脚本中,我想使用 和 等环境变量$JAVA_HOME$M2_HOME自动启动构建过程。问题是这些变量是在.bashrcvia中设置的export JAVA_HOME=/../..

source因此,在执行我的脚本之前我需要这些文件:

* * * * * source ~/.bash_profile; source ~/.bashrc; /home/user/myscript.sh;
Run Code Online (Sandbox Code Playgroud)

但是,变量尚未设置!为了测试这一点,我将echo环境变量添加env到日志文件中:

env >> ~/env.log
echo $M2_HOME >> ~/env.log
Run Code Online (Sandbox Code Playgroud)

日志文件仍然不包含变量。仅将以下内容附加到文件中(无$M2_HOME等):

LANGUAGE=en_US:en
HOME=/home/user
LOGNAME=user
PATH=/usr/bin:/bin
LANG=en_US.UTF-8
SHELL=/bin/sh
PWD=/home/user
Run Code Online (Sandbox Code Playgroud)

如果我在 shell 中运行脚本,所有变量都会打印到env.log.

source当我将命令放入脚本文件中时,也会发生同样的情况。仅当我export在变量声明之前删除关键字时,命令才可以看到该关键字echo $var。但这不是解决方案,因为我不管理这些声明。


我尝试了@tripplee的解决方案与有限的sh shell问题,但它仍然不起作用。我进一步将其简化为一个非常简单的 cronjob,无需第二个脚本来显示问题:

* * * * * . …
Run Code Online (Sandbox Code Playgroud)

ubuntu bash environment-variables cron

5
推荐指数
1
解决办法
2万
查看次数

如何为网络服务器产生的进程设置环境变量?

在我的设置(debian etch、lighttpd)中,我认为我的网站正在调用一个通过 PHP 进行图像处理的程序。我想通过设置环境变量来更改此程序的行为,最好不要更改 Web 应用程序。

这该怎么做?=)

为 www-data 用户拥有的所有进程设置环境变量也可以,但我确信在这种情况下是否会尊重 .bashrc(?) 中的条目。

谢谢!

debian lighttpd environment-variables

4
推荐指数
1
解决办法
2932
查看次数

在 LocalService 帐户下运行的 Win Service 无法访问环境变量

我正在寻找证明或反驳我的理论。我们有在 LocalSystem 帐户下运行的 Windows 服务。该服务正在调用msbuild和构建csproj(Visual Studio 项目)文件,该文件使用环境变量。但它的下降,因为它无法识别或找到该环境变量。

有没有办法测试或确保在 LocalSystem 下运行的 win 服务可以访问环境变量?

windows-service environment-variables local-system

4
推荐指数
1
解决办法
6771
查看次数

如何为别名设置环境

我在 apache 配置中配置了几个别名。我想为他们每个人设置一个环境变量。如何?

我有这个

/alias1 /mapped/to/a/path
/alias2 /mapped/to/a/path
/alias3 /mapped/to/a/path
/alias4 /mapped/to/a/path
/alias5 /mapped/to/a/path
Run Code Online (Sandbox Code Playgroud)

我想要的是为每个别名转发一个环境变量

就像是

/alias1 /mapped/to/a/path AND SetEnv VAR=a
/alias2 /mapped/to/a/path AND SetEnv VAR=b
/alias3 /mapped/to/a/path AND SetEnv VAR=c
/alias4 /mapped/to/a/path AND SetEnv VAR=d
/alias5 /mapped/to/a/path AND SetEnv VAR=e
Run Code Online (Sandbox Code Playgroud)

linux httpd alias environment-variables apache-2.2

4
推荐指数
1
解决办法
2796
查看次数

如何配置 sudoers 以始终保持 LD_LIBRARY_PATH 环境变量?

无论我尝试什么,在我使用 sudo 运行命令后,似乎都没有保留LD_LIBRARY_PATH环境变量。我设法让它坚持下去的唯一方法是每当我sudo从命令行LD_LIBRARY_PATH=/the/path调用它时在我的命令前加上前缀,但我不想每次都这样做。

似乎 env_keep 选项忽略了这个变量,exempt_group 选项也是如此。

我的 %group 目前ALL=(ALL) NOPASSWD:ALL在 sudoers 中具有访问权限。我希望为我运行的任何命令保留这个特定的环境变量。

我怎样才能做到这一点?

我的服务器运行的是 Red Hat Enterprise Linux 5.7。

redhat sudo environment-variables

4
推荐指数
2
解决办法
1万
查看次数