我在某处的脚本中阅读:
a_var=C ls
我试过了。这将ls
执行(我看到当前目录的内容)并将a_var
留空。这是什么=C
bash ?这是我第一次看到它。
这会将环境变量a_var
设置为在运行ls
的环境中"C"
。这很可能用于实际设置排序规则ls
用于影响排序(LANG=C ls
或LC_COLLATE=C ls
)。
使用 C 作为ls
的排序规则将按区分大小写对文件进行排序,这意味着以 a-z 开头的文件在 A-Z 之后。SOme其他排序规则可能有其他规则,例如忽略点或将变音符号视为元音 -C
没有这样的东西。
行var_a=C ls
是一个 bash 命令。
任何 Bash 命令都可以在执行环境的命令本地设置环境变量,这些环境变量(在您的情况下var_a
)在执行后将不存在。例如,这通常用于运行make
以指定选项,例如与默认值不同的编译器,或者如下所示curl
:
$ CC=~/bin/my_own_cc make
$ http_proxy=http://proxy_server:8080 curl http://www.google.com
当像这样运行时,make
将用户~/bin/my_own_cc
而不是默认的 C 编译器,并且curl
将知道在检索http://google.com
时使用代理。
这些命令不会用其他不必要的变量污染执行环境。
也就是说,在您的示例中,这没有任何副作用。