Questions tagged «environment-variables»

对于与环境变量有关的问题,一组动态变量可能会影响正在运行的进程的行为和对资源的访问。使用此标记可解决有关环境变量的问题,或有关在运行过程行为和对资源的访问中因设置或修改变量值的影响而引起的问题的问题。


3
在管道中调用我的函数时未设置环境变量
我具有以下递归函数来设置环境变量: function par_set { PAR=$1 VAL=$2 if [ "" != "$1" ] then export ${PAR}=${VAL} echo ${PAR}=${VAL} shift shift par_set $* fi } 如果我自己调用它,它将设置变量并回显到stdout: $ par_set FN WORKS FN=WORKS $ echo "FN = "$FN FN = WORKS 将stdout重定向到文件也可以: $ par_set REDIR WORKS > out cat out REDIR=WORKS $ echo "REDIR …

2
在Tmux状态栏Shell命令中使用环境变量
我正在尝试创建一个tmux状态栏,其中显示了三个时区: US Eastern Time :: UTC :: Central European Time。使用TZ环境变量可使date命令显示给定时区中的时间。 我正在尝试使用此tmux.conf设置来这样做: set -g status-right "#[fg=white]#S #I:#P #[fg=yellow]:: %d %b %Y #[fg=green]:: #(TZ=America/New_York date +%H:%M) :: #(date -u +%H:%M) UTC :: #(TZ=Europe/Belgrade date +%H:%M)" 但是,传递TZ=foo在中不起作用#(…)。(我得到的服务器,date而不是我的预期)。有什么建议?

2
zsh中的局部变量:zsh中bash的“ export -n”等效项是什么
我正在尝试在zsh中将变量的范围包含到shell中,而没有孩子看到它。例如,我在.zshrc中键入: GREP_OPTIONS=--color=always 但是,如果我使用以下命令运行shell脚本: #!/bin/bash echo $GREP_OPTIONS 输出为: --color=always 虽然我希望它为null(上面的shell脚本根本不应该看到GREP_OPTIONS变量)。 用bash可以说:export -n GREP_OPTIONS=--color=always,这可以防止这种情况的发生。如何在zsh中完成此操作?

2
环境与cron相同的交互式Shell
我知道crontabs的神奇世界有很多陷阱,但是有时候,当您有一些聪明的方法可以进入交互式(bash)shell,并且环境与从shell运行shell脚本时完全相同时,它有时会对很多故障排除有帮助。 crontab。 现在我想到了/bin/openvt -c8 -- /bin/bash --noprofile -l,但是它需要root特权,设置了太多的变量,而简单的su myusername设置了很多额外的环境。 有人知道一种启动具有Cron环境的交互式bash shell的方法,并且不需要Kubuntu的root特权吗? 当它在ssh会话中,在GUI中以及在以下一种或多种操作系统上运行时,也会获得奖励:HP-UX,Solaris和AIX

1
您如何为es设置环境?
最近几天我一直在玩es,它(如rc)具有一个怪癖/功能,即它仅.esrc在登录时运行其启动脚本()。在每个交互式会话中运行代码的通常方法是将该代码放入%prompt函数中。 当然,%prompt如果es -l从未运行过,则没有任何功能。 那么,问题来了:当您通过gdm或类似资源(仅源.profile(或.xprofile,.xsession等))进入时,如何设置登录环境?我想出的最好的是: if [ -f "$HOME/.esrc" ]; then eval "`es -l <<-x sh <<<'export -p' x`" fi 这似乎令人震惊。有更好的方法吗?

3
如何取消导出变量而不丢失其值?
假设我导出了一个变量: foo=bar export foo 现在,我想取消导出它。就是说,如果我这样做,我就sh -c 'echo "$foo"'不会得到bar。foo完全不应该出现在sh -c的环境中。 sh -c仅仅是示例,是显示变量存在的一种简单方法。该命令可以是任何东西-它的行为可能仅受其环境中变量的存在影响。 我可以: unset 变量,并丢失它 使用env以下命令将其删除:env -u foo sh -c 'echo "$foo"' 如果要继续使用当前的shell一段时间,则不切实际。 理想情况下,我想保留变量的值,但不要让它在子进程中完全显示,甚至不显示为空变量。 我想我可以做到: otherfoo="$foo"; unset foo; foo="$otherfoo"; unset otherfoo otherfoo如果已经存在,这有可能会踩踏。 那是唯一的方法吗?有什么标准方法吗?

6
如何设置Ruby GEM_HOME和GEM_PATH
我是Linux的NOVICE用户,并且使用Linux Mint 17.1 最近3天,我已为该问题重新安装了Linux Mint 20,但无法修复 我正在尝试使用rvm在rails上安装ruby,发生的事情是,如果启动新的Linux安装,并尝试在关闭终端会话后成功安装的一个终端会话中成功安装gems和ruby以及其他东西,那么我将无法获得这些gems 。 在过去3天中,通过重新安装20次以上,我也在网上进行了搜索。有人告诉我将环境变量/etc/environment放在该会话的回显路径中,并将其粘贴到/etc/environment文件中。 甚至现在我都没有安装宝石 键入时rvm -v出现以下错误 Warning: PATH set to RVM ruby but GEM_HOME and/or GEM_PATH not set, see: https://github.com/wayneeseguin/rvm/issues/3212 Warning! PATH is not properly set up, $GEM_HOME is not set, usually this is caused by shell initialization files - check them for 'PATH=...' …

2
清除所有变量而不关闭终端
我想知道如何清除我在命令提示符下定义的所有变量而不关闭终端吗? 例如,如果我在命令提示符下将变量设置为: $ a=1 现在,我想删除变量$a(以及许多其他以类似方式定义的变量)而不关闭终端。我可以使用,unset但是如果没有大的话,那将会很忙。变量

1
在哪里可以设置全局Java选项?
我在Java程序中可怕的,不正确渲染字体,如jabref和rubymine。可以通过运行来解决 _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on' jabref 我知道我可以将这些Java选项导出为环境变量,然后从命令行启动程序。但是,是否有一种方法可以全局设置这些选项,以便所有Java程序都能识别它们,而无论它们如何启动? 我也知道我可以修改*.desktopJava程序的所有文件,但是我正在寻找一种全局解决方案。 我java-7-openjdk在Arch Linux上使用。(FWIW过去安装了现在已损坏的jre7-openjdk-headless-infinality时还可以。)

2
找不到bash setenv命令
当我使用以下命令时 setenv CLASSPATH /path/mysql-connector-java-ver-bin.jar:$CLASSPATH 错误是 bash setenv command is not found 当我通过哪个命令找到setenv的路径时,我发现了以下路径 (/usr/kerberos/sbin:/usr/kerberos/bin:/home/ec2/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/ec2/bin:/root/bin)

1
如何为使用`nohup`执行的程序设置环境变量?
(我正在编辑现有的Bash脚本,因此我可能在这里犯了一个愚蠢的错误...) 我有一个shell脚本,它以环境变量作为参数保存命令,如下所示: COMMAND="mvn clean install -P $MAVEN_PROFILE" 然后,它nohup大致如下执行命令: nohup $COMMAND > logfile 这可行。 现在,我想设置一个可以在Maven中访问的环境变量。我已经尝试了以下几种方法: COMMAND="FORMAVEN=valueForMaven mvn clean install -P $MAVEN_PROFILE" ...但随后它终止于: nohup: failed to run command `FORMAVEN=valueForMaven': No such file or directory 我觉得这里有几个不相关的概念在起作用,我都不了解甚至不知道。我需要什么才能做到以上几点?

1
为什么我不能打印在env输出中看到的变量?
我对设置一个外壳实例与另一个外壳实例的环境变量感兴趣。所以我决定做一些研究。阅读了许多与此有关的问题后,我决定对其进行测试。 我生成了两个外壳A和B(PID 420),它们都在运行zsh。从外壳程序AI运行以下命令。 sudo gdb -p 420 (gdb) call setenv("FOO", "bar", 1) (gdb) detach 从外壳B运行时,env我可以看到变量FOO确实设置为bar值。这使我认为FOO已在shell B的环境中成功初始化。但是,如果我尝试打印FOO,则会出现一个空行,表明未设置FOO。对我来说,这里似乎有矛盾。 这已在我自己的Arch GNU / Linux系统和Ubuntu VM上进行了测试。我还在bash变量甚至未在env中显示的地方对此进行了测试。尽管这让我感到失望,但如果shell在生成时缓存其环境的副本并仅使用它(在链接的问题之一中建议),则是有意义的。这仍然不能回答为什么zsh可以看到变量。 为什么输出为echo $FOO空? 编辑 输入评论后,我决定进行更多测试。结果可以在下表中看到。第一列是FOO注入变量的外壳。第一行包含该命令的输出,可以在其下面看到。FOO使用:注入变量sudo gdb -p 420 -batch -ex 'call setenv("FOO", "bar", 1)'。zsh:专用的命令zsh -c '...'也已使用bash进行了测试。结果是相同的,为简洁起见,省略了它们的输出。 Arch GNU / Linux,zsh 5.3.1,bash 4.4.12(1) | | env | grep FOO | echo …

1
Bash:有多少嵌套会话深?
假设我启动了一个bash外壳, 然后bash是该外壳中的 另一个bash会话,然后是该会话中的 另一个bash会话,然后是该会话中的另一个会话, (N次)等 要退出所有N个会话,我必须键入exitN次。 我如何找出在任何给定的bash会话中嵌套的深度? 理想情况下,我正在寻找一些类似于$STY屏幕会话的环境变量。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.