【问题标题】:Hash ("#") symbol in /etc/environment causes string to be split/etc/environment 中的哈希(“#”)符号导致字符串被拆分
【发布时间】:2019-11-03 10:01:24
【问题描述】:

我正在尝试通过

向我的系统添加一个环境变量
sudo nano /etc/environment

该值是一个包含哈希的长字符串,#

包含# 后,字符串未完全存储; # 后面的字符消失了。

如果不包含#,则字符串会完全存储。

我已经尝试将字符串包装在" ":

MY_VARIABLE="34534554345 # DFGDGDFG"

我希望变量完全存储,如下所示:

34534554345#DFGDGDFG

不是这个:

34534554345

【问题讨论】:

  • 您使用哪个 shell 与 bash 和 dash 我无法通过 MY_VARIABLE="34534554345 # DFGDGDFG" 重现您的错误
  • 如果您将变量设置为34534554345 # DFGDGDFG,它将是34534554345 # DFGDGDFG,而不是34534554345#DFGDGDFG。注意空格。
  • @JGNI 是 bash
  • @ArkadiuszDrabczyk 这是一个 django 密钥;空格只是为了使 # 明显。实际上,这一切都与空白无关

标签: linux shell ubuntu command-line


【解决方案1】:

PAM 解释 /etc/environment,而不是 shell。它的目的是在每一行上都是简单的KEY=VALUE,不需要引号。 # 标记了一条评论,没有办法逃避它。

您可以使用/etc/profile 来定义您的环境变量。在大多数情况下,它应该可以在系统范围内使用。

/etc/environment

TEST2="12345#6789"

/etc/profile

export TEST="12345 #6789"

结果:

root@tempmon:~ $ env|grep TEST
TEST=12345# 6789
TEST2=12345

【讨论】:

  • 我已经打开了 /etc/profile 但是我应该把变量放在哪里?
  • 我通常只是将它们添加到文件末尾。
  • 感谢您的回复。我将它添加到 /etc/profile,但它不包含在使用“printenv”打印的环境变量列表中
  • 你导出了吗?如果它在 /etc/profile 中,它需要是:export VAR="value"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 2015-01-01
  • 1970-01-01
  • 2016-05-21
  • 1970-01-01
相关资源
最近更新 更多