为了账号安全,请及时绑定邮箱和手机立即绑定

Linux环境变量名中允许的字符

Linux环境变量名中允许的字符

慕哥9229398 2019-08-27 16:45:40
Linux环境变量名中允许的字符Linux环境变量名称中允许哪些字符?我粗略地搜索手册页和网页只会产生有关如何使用变量的信息,但不会产生允许使用哪些名称的信息。我有一个Java程序,需要一个包含点的已定义环境变量,如com.example.fancyproperty。使用Windows我可以设置该变量,但我没有运气在linux中设置它(在SuSE和Ubuntu中尝试过)。这个变量名是否允许?
查看完整描述

3 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

来自公开组:

这些字符串的格式为name = value; 名称不得包含字符'='。对于可在符合IEEE Std 1003.1-2001的系统中移植的值,该值应由便携式字符集中的字符组成(NUL除外,如下所示)。

所以名称可以包含除=和NUL之外的任何字符,但是:

IEEE Std 1003.1-2001的Shell和Utilities卷中的实用程序使用的环境变量名称仅由大写字母,数字和便携式字符集中定义的字符的“_”(下划线)组成,并且不以数字开头。实现可以允许其他字符; 申请应容忍此类名称的存在。

因此,尽管名称可能有效,但您的shell可能不支持除字母,数字和下划线之外的任何内容。


查看完整回答
反对 回复 2019-08-27
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

上壳部分的POSIX标准 IEEE标准1003.1-2008 / IEEE POSIX P1003.2 / ISO 9945.2 壳牌和工具标准没有定义的变量名词法约定,但粗略 看看源揭示它使用类似的东西

[a-zA-Z_]+[a-zA-Z0-9_]*

(编辑:在第二个字符类中添加了缺少的下划线。)

快速说明,因为有些shell不支持正则表达式中的+,可能更具可移植性的正则表达式可能是:

[a-zA-Z_]{1,}[a-zA-Z0-9_]{0,}


查看完整回答
反对 回复 2019-08-27
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

我的快速测试显示它们基本上遵循与C变量名称相同的规则,即

  1. az,AZ _和0-9

  2. 不能以数字开头

所以这不包括.在他们内心。任何非法变量名称都被记入unknown command

这是在ZSH中测试的,ZSH主要与BASH兼容。


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 1206 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信