Questions tagged «environment-variables»

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

2
为什么不能将变量用作设置环境变量的命令的前缀?
通常,可以通过为命令设置前缀来设置环境变量,如下所示: hello=hi bash -c 'echo $hello' 我也知道我们可以使用变量来替代命令调用的任何部分,如下所示: $ cmd=bash $ $cmd -c "echo hi" # equivalent to bash -c "echo hi" 我很惊讶地发现您不能使用变量来为设置环境变量的命令添加前缀。测试用例: $ prefix=hello=hi $ echo $prefix # prints hello=hi $ $prefix bash -c 'echo $hello' hello=hi: command not found 为什么不能使用变量设置环境变量?前缀部分是特殊的部分吗?我可以通过在前面使用eval使其工作,但是我仍然不明白为什么。我正在使用bash 4.4。

2
%%在函数名称中表示什么?
查看的输出env,我发现还有以下功能。 BASH_FUNC_mc%%=() { . /usr/share/mc/mc-wrapper.sh } /usr/share/mc/mc-wrapper.sh文件的内容如下。 MC_USER=`id | sed 's/[^(]*(//;s/).*//'` MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$" /usr/bin/mc -P "$MC_PWD_FILE" "$@" if test -r "$MC_PWD_FILE"; then MC_PWD="`cat "$MC_PWD_FILE"`" if test -n "$MC_PWD" && test -d "$MC_PWD"; then cd "$MC_PWD" fi unset MC_PWD fi rm -f "$MC_PWD_FILE" unset MC_PWD_FILE %%函数名称中的字符是什么意思?它们是否使它成为在特定情况下调用的函数,还是让我以不同于其他函数的方式调用它? 我正在使用带有Bash版本4.3.42(1)-发行版(x86_64-suse-linux-gnu)的openSUSE 42.3,如果有什么不同的话。

3
bash脚本在命令中的临时值
像下面的命令一样, if true; then IFS=":" read a b c d e f <<< "$test" 书中说,IFS ":"在主命令(read a b c d e f <<< "$value")之前使用值分配命令()时,其值暂时对主命令有效。因此,该read命令使用delimiter :。 但是,就像这个命令 if true; then HOME="hello" echo "$HOME" 回声不是你好。以上命令的真正含义是什么?


2
设置单个程序执行的语言
完整的C ++ i18n gettext()“ hello world”示例。在执行程序之前,使用export设置LANG环境变量(Linux): export LANG=es_MX.utf8 ./hellogt 有没有一种方法可以像在命令行中一样在执行hellogt时设置语言?这对于测试程序将很方便。

2
posix shell:打印环境变量名称列表(无值)
以与多种实现兼容的posix兼容方式,如何打印当前定义的环境变量列表而不包含它们的值? 在某些实现(mksh,freebsd / bin / sh)上,只需单独使用即可export: $ export FOO2 FOO 但是对于其他一些实现(bash,zsh,破折号),export也会显示该值。例如,使用bash: $ export export FOO2='as df\ asdk=fja:\ asd=fa\ asdf' export FOO='sjfkasjfd kjasdf:\ asdkj=fkajdsf:\ :askjfkajsf=asdfkj:\ safdkj' $ printenv | sed -n l FOO2=as\tdf\$ asdk=fja:\$ asd=fa\$ asdf$ FOO=sjfkasjfd kjasdf:\$ asdkj=fkajdsf:\$ \t:askjfkajsf=asdfkj:\$ safdkj$ 其他选项(例如,env或printenv没有选项)仅显示不带值的变量名,至少在我尝试过的linux和freebsd平台上不行。 管道到awk / sed / etc。或使用参数扩展技术(例如${foo%%=*})修剪列表是可以接受的,但是它必须使用可能跨越行且值中带有=空格的值(请参见上面的示例)。 特定于特定Shell实现的答案很有趣,但是我主要是在寻找在各个实现之间都兼容的东西。

3
Unix是否等效于Windows环境变量PATHEXT
我想知道Windows环境变量是否具有Unix等效项PATHEXT。 对于没有Windows背景的用户:添加文件后缀可以PATHEXT使我执行脚本,而无需在cmd.exe中键入该后缀。例如,在我的Windows计算机上,PATHEXT包含后缀,.pl并且当我想在cmd.exe中执行Perl脚本时,我只需键入my-script就可以执行它。但是,为了在bash中执行相同的脚本,我需要写全名:my-script.pl。 由于我目前同时在Windows和Unix上工作,因此我几乎总是陷入再次进入Unix框时忘记键入后缀的陷阱。

3
基于环境变量的条件分配
在bash脚本中,我要分配一个局部变量,以便该值取决于外部的全局环境变量($MYAPP_ENV)。 if [ "$MYAPP_ENV" == "PROD" ] then SERVER_LOGIN=foobar123@prod.example.com else SERVER_LOGIN=foobar987@test.example.com fi 有没有一种较短的(到目前为止还很干净)编写上述作业的方法?(大概使用某种条件运算符/内联if。)

2
如何使zsh中的RPROMPT在每次输入时自动更新?
我RPROMPT设置为使用显示svn信息vcs_info。它读RPROMPT=${vcs_info_msg_0_}。vcs_info被称为使用precmd()。但是,当我更改目录时,RPROMPT不会更新。仅当我再次调用提示符(通过源〜/ .zshrc或提示符)并且在chdir上不变时,它才起作用,除非再次调用提示符。有什么办法可以改变这种行为?

2
为什么#!/ usr / bin / env bash在我的系统上不起作用?
在运行一些他们抱怨的安装脚本时,我遇到了一些问题bad interpreter。 因此,我举了一个简单的例子,但我无法弄清楚问题出在哪里,请参阅下文。 #!/usr/bin/env bash echo "hello" 执行上面的脚本会导致以下错误 [root@ech-10-24-130-154 dc-user]# ./junk.sh bash: ./junk.sh: /usr/bin/env: bad interpreter: No such file or directory 该/usr/bin/env文件存在,请参见下文: [root@ech-10-24-130-154 dc-user]# ls -l /usr/bin/env lrwxrwxrwx 1 root root 13 Jan 27 04:14 /usr/bin/env -> ../../bin/env [root@ech-10-24-130-154 dc-user]# ls -l /bin/env -rwxr-xr-x 1 root root 23832 Jul 16 …


4
从Vim脱壳时,如何使Shell别名可用?
在我的中.zshrc,我声明了一些别名。例如,which dbstart显示该别名的内容。 如果我从该shell打开vim,则它是一个子进程。在Vim中,我可以使用运行shell命令:! some_command。如果我确实:! echo $0要查看Vim使用的shell,它将输出'/ bin / zsh'。但是,我的别名在那里不可用。 从Vim剥壳时,如何使我的常规壳别名可用? 两个想法: 以某种方式EXPORT,别名从原始shell到其子进程vim,再到其shell子进程 配置Vim .zshrc在创建其子外壳时读取我的信息



3
_何时是bash shell的环境变量?
Bash手册说(帮助页面,我的重点): 当Bash调用外部命令时,该变量$_将设置为命令的完整路径名,并在其环境中传递给该命令。 和(特殊参数): _ ($_,下划线。)在shell启动时,设置为用于调用在环境或参数列表中传递的正在执行的shell或shell脚本的绝对路径名。随后,在扩展后,扩展到上一个命令的最后一个参数。还设置为用于调用每个执行的命令的完整路径名,并放置在导出到该命令的环境中。检查邮件时,此参数保存邮件文件的名称。 在bash shell中,我运行: $ bash $ export | grep '_=' 根据手册,_应该是新bash shell的环境变量。export应该输出新bash shell的所有环境变量,但不输出 _。所以我想知道_新bash shell的环境变量是否是? 实际上,在任何bash shell中,都会发生相同的情况 $ export | grep '_=' 什么都不输出 所以我想知道_bash shell的环境变量是否曾经存在吗? 为了比较: $ dash $ export | grep '_=' export _='/bin/dash' 我的帖子的灵感来自Mike的评论和Stephane的回复。

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.