当我想更改在 bash 中执行的命令的环境时,我可以在它前面加上变量赋值。例如,如果我暂时想设置变量,CLICOLOR我可以这样做:
CLICOLOR=1 ls
Run Code Online (Sandbox Code Playgroud)
但我也可以这样做
env CLICOLOR=1 ls
Run Code Online (Sandbox Code Playgroud)
两者结果相同,所以我想知道有什么区别吗?为什么人们使用其中一种而不是另一种?是因为可移植性,还是使用输出重定向或管道等时有什么区别?
这主要是为了让您不必运行 shell 来设置变量。许多工具允许您运行单个命令来执行特定任务(cron 作业、构建系统、各种工具的内部脚本或宏语言),并且您希望最大限度地减少此类场景的性能影响和安全面。