Zsh 替代 bash 的快速赋值和继承技巧

Zsh 替代 bash 的快速赋值和继承技巧

bash 中有一个技巧,允许您为子进程设置环境变量并在一行中运行它,在 shell 中保留变量的原始值。例如,为了设置“LANG”和“FOO”环境变量,然后运行“gedit”,我们将使用以下命令(来自Ubuntu 文档):

LANG=he_IL.UTF-8 FOO=bar gedit

它在 zsh 中不起作用。

有没有类似简单的替代方法?

答案1

您所描述的内容在 Zsh 中的工作方式与在 Bash 中的相同。来自手册

简单命令是一系列可选参数赋值,后跟空格分隔的单词,中间穿插可选重定向。第一个单词是要执行的命令,其余单词(如果有)是命令的参数。

如果给出了命令名,则参数分配会在执行命令时修改命令的环境。(...)

… 和在 Bash 中

当执行简单命令时,shell 从左到右执行以下扩展、分配和重定向。

  1. 解析器标记为变量赋值(命令名前面的词)和重定向的词被保存以供稍后处理。

如果没有结果命令名,则变量赋值会影响当前 shell 环境。否则,变量将添加到执行命令的环境中,不会影响当前 shell 环境

相关内容