我在某处阅读了一个脚本:
a_var=C ls
我试了一下。这将执行ls
(我看到当前目录的内容)并将a_var
留空。什么是bash中的=C
?这是我第一次看到它。
答案 0 :(得分:4)
这将在环境a_var
中运行环境变量"C"
设置为ls
。很可能这用于实际设置排序ls
用于影响排序(LANG=C ls
或LC_COLLATE=C ls
)。
使用C作为ls
的排序规则将对文件区分大小写,这意味着以a-z开头的文件位于A-Z之后。其他排序规则可能有其他规则,例如忽略点或将元音变形作为元音处理 - C
没有这样的事情。
答案 1 :(得分:1)
行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
时知道使用代理。
这些命令不会使用其他不必要的变量污染执行环境。
那就是说,在你的例子中,这没有任何副作用。