当我/bin/bash
使用 2 个参数运行该过程时-c
,SomeUserInput
SomeUserInput 在哪里echo $TERM
输出是
xterm-256color
有没有办法可以通过命令行参数/bin/bash
设置 $TERM 的值,以便上面的调用echo $TERM
会打印我指定的其他内容?
(是的,我man bash
在其他地方做了很多挖掘和搜索,但找不到答案;尽管我认为它可能在那里。)
当我/bin/bash
使用 2 个参数运行该过程时-c
,SomeUserInput
SomeUserInput 在哪里echo $TERM
输出是
xterm-256color
有没有办法可以通过命令行参数/bin/bash
设置 $TERM 的值,以便上面的调用echo $TERM
会打印我指定的其他内容?
(是的,我man bash
在其他地方做了很多挖掘和搜索,但找不到答案;尽管我认为它可能在那里。)
首先,由于您使用了双引号,因此会在当前 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'
好吧,您可以在.bashrc
文件上设置变量,也可以简单地使用 bash 调用进行设置:
/bin/bash -c "TERM=something-else; echo $TERM"