5

当我/bin/bash使用 2 个参数运行该过程时-cSomeUserInput

SomeUserInput 在哪里echo $TERM

输出是

xterm-256color

有没有办法可以通过命令行参数/bin/bash设置 $TERM 的值,以便上面的调用echo $TERM会打印我指定的其他内容?

(是的,我man bash在其他地方做了很多挖掘和搜索,但找不到答案;尽管我认为它可能在那里。)

4

2 回答 2

7

首先,由于您使用了双引号,因此会在当前 shell 中打印 TERM 的值,而不是您调用的 bash。为此,请使用/bin/bash -c 'echo $TERM'.

要设置 TERM 的值,您可以export TERM=linux在运行该命令之前,仅使用TERM=linux /bin/bash -c 'echo $TERM'(shell 表达式) 或/usr/bin/env TERM=linux /bin/bash -c 'echo $TERM'(execve compatible (as for find -exec)) 为该 shell 设置它。

更新:至于您仅使用命令行参数的编辑/bin/bash,您可以在不修改输入的情况下执行此操作,如下所示:

/bin/bash -c 'TERM=something; eval "$1"' -- 'SomeUserInput'
于 2013-01-22T21:01:08.437 回答
2

好吧,您可以在.bashrc文件上设置变量,也可以简单地使用 bash 调用进行设置:

/bin/bash -c "TERM=something-else; echo $TERM"
于 2013-01-22T20:57:45.923 回答