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节,名称),应返回令牌分配字。(引用字符不能参与形成有效名称。)
- 否则,未指定返回的是赋值\字还是字
增加了强调。因为前导的
var=value
对被识别为命令特定的环境变量名称,作为与POSIX sh兼容的shell标准的一部分
从Shell命令语言规范的第页:
7.
[命令名前面的赋值]
7.a.
[当第一个单词出现时]
如果令牌不包含字符“=”,则应用规则1。否则,应采用7b
7.b.
[不是第一个词]
如果令牌包含等号字符:
- 如果以“=”开头,则应返回标记字
- 如果“=”前面的所有字符构成有效名称(参见IEEE Std 1003.1-2001基本定义卷,第3.230节,名称),应返回令牌分配字。(引用字符不能参与形成有效名称。)
- 否则,未指定返回的是赋值\字还是字
增加了强调。因为前导的
var=value
对被识别为命令特定的环境变量名称,作为与POSIX sh兼容的shell标准的一部分
从Shell命令语言规范的第页:
7.
[命令名前面的赋值]
7.a.
[当第一个单词出现时]
如果令牌不包含字符“=”,则应用规则1。否则,应采用7b
7.b.
[不是第一个词]
如果令牌包含等号字符:
- 如果以“=”开头,则应返回标记字
- 如果“=”前面的所有字符构成有效名称(参见IEEE Std 1003.1-2001基本定义卷,第3.230节,名称),应返回令牌分配字。(引用字符不能参与形成有效名称。)
- 否则,未指定返回的是赋值\字还是字
增加了强调。因为前导的
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'