Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
shell命令上的前导键=值对是如何工作的?为什么它们不是一个错误?_Shell_Environment Variables - Fatal编程技术网

shell命令上的前导键=值对是如何工作的?为什么它们不是一个错误?

shell命令上的前导键=值对是如何工作的?为什么它们不是一个错误?,shell,environment-variables,Shell,Environment Variables,那么这是如何工作的呢?为什么解释器不查找ASDF命令,如果找不到则报告错误?因为前导var=value对被识别为命令特定的环境变量名,这是与POSIX sh兼容的shell标准的一部分 从Shell命令语言规范的第页: 7.[命令名前面的赋值] 7.a.[当第一个单词出现时] 如果令牌不包含字符“=”,则应用规则1。否则,应采用7b 7.b.[不是第一个词] 如果令牌包含等号字符: 如果以“=”开头,则应返回标记字 如果“=”前面的所有字符构成有效名称(参见IEEE Std 1003.1-20

那么这是如何工作的呢?为什么解释器不查找
ASDF
命令,如果找不到则报告错误?

因为前导
var=value
对被识别为命令特定的环境变量名,这是与POSIX sh兼容的shell标准的一部分

从Shell命令语言规范的第页:

7.
[命令名前面的赋值]

7.a.
[当第一个单词出现时]

如果令牌不包含字符“=”,则应用规则1。否则,应采用7b

7.b.
[不是第一个词]

如果令牌包含等号字符:

  • 如果以“=”开头,则应返回标记字

  • 如果“=”前面的所有字符构成有效名称(参见IEEE Std 1003.1-2001基本定义卷,第3.230节,名称),应返回令牌分配字。(引用字符不能参与形成有效名称。)

  • 否则,未指定返回的是赋值\字还是字

应按照简单命令中的规定分配名称。

从Shell命令语言规范的第页:

如果没有命令名结果,变量赋值将影响当前的执行环境。否则,应针对命令的执行环境导出变量赋值,且不得影响当前执行环境(特殊内置除外)。[……]


增加了强调。

因为前导的
var=value
对被识别为命令特定的环境变量名称,作为与POSIX sh兼容的shell标准的一部分

从Shell命令语言规范的第页:

7.
[命令名前面的赋值]

7.a.
[当第一个单词出现时]

如果令牌不包含字符“=”,则应用规则1。否则,应采用7b

7.b.
[不是第一个词]

如果令牌包含等号字符:

  • 如果以“=”开头,则应返回标记字

  • 如果“=”前面的所有字符构成有效名称(参见IEEE Std 1003.1-2001基本定义卷,第3.230节,名称),应返回令牌分配字。(引用字符不能参与形成有效名称。)

  • 否则,未指定返回的是赋值\字还是字

应按照简单命令中的规定分配名称。

从Shell命令语言规范的第页:

如果没有命令名结果,变量赋值将影响当前的执行环境。否则,应针对命令的执行环境导出变量赋值,且不得影响当前执行环境(特殊内置除外)。[……]


增加了强调。

因为前导的
var=value
对被识别为命令特定的环境变量名称,作为与POSIX sh兼容的shell标准的一部分

从Shell命令语言规范的第页:

7.
[命令名前面的赋值]

7.a.
[当第一个单词出现时]

如果令牌不包含字符“=”,则应用规则1。否则,应采用7b

7.b.
[不是第一个词]

如果令牌包含等号字符:

  • 如果以“=”开头,则应返回标记字

  • 如果“=”前面的所有字符构成有效名称(参见IEEE Std 1003.1-2001基本定义卷,第3.230节,名称),应返回令牌分配字。(引用字符不能参与形成有效名称。)

  • 否则,未指定返回的是赋值\字还是字

应按照简单命令中的规定分配名称。

从Shell命令语言规范的第页:

如果没有命令名结果,变量赋值将影响当前的执行环境。否则,应针对命令的执行环境导出变量赋值,且不得影响当前执行环境(特殊内置除外)。[……]


增加了强调。

因为前导的
var=value
对被识别为命令特定的环境变量名称,作为与POSIX sh兼容的shell标准的一部分

从Shell命令语言规范的第页:

7.
[命令名前面的赋值]

7.a.
[当第一个单词出现时]

如果令牌不包含字符“=”,则应用规则1。否则,应采用7b

7.b.
[不是第一个词]

如果令牌包含等号字符:

  • 如果以“=”开头,则应返回标记字

  • 如果“=”前面的所有字符构成有效名称(参见IEEE Std 1003.1-2001基本定义卷,第3.230节,名称),应返回令牌分配字。(引用字符不能参与形成有效名称。)

  • 否则,未指定返回的是赋值\字还是字

应按照简单命令中的规定分配名称。

(my_virtualenv)my_pc:~/path$ ASDF='asdf' python
...
>>> import os
>>> os.environ['ASDF']
'asdf'