我将环境变量存储在 /etc/environment
中,例如:
FACEBOOK_API_KEY=XXXXXXXXXXX
FACEBOOK_API_SECRET=XXXXXXXXXX
但是当我通过 Rails 访问 ENV 变量时,我得到了这个:
ENV['FACEBOOK_API_KEY']
=> XXXXXXXXX\r
注意 \r
,如何在不清理对 ENV 变量的每次调用的情况下摆脱它?
最佳答案
我的猜测是你得到一个 \r
因为你正在使用 Windows 文本编辑器编辑 /etc/environment
并将它安装在 Unix 系统上 (或者可能在 Windows 中使用 Cygwin,但同样适用)。或者您从这样做的来源复制/粘贴它。无论如何,某些东西将 CRLF 引入了只需要 LF 行结尾的 Unix 文件中。
如果它是一个编辑器,您需要修复它以停止使用 Windows CRLF (\r\n
) 行结尾,并使用 Unix LF (\n
) 行结尾。 Notepad++ 有一个选项,许多其他编辑器和 IDE 也有。 Google 一下,找出如何使用 Unix 行尾。否则你会遇到很多这样的问题。
您可以修复现有文件,方法是通过 dos2unix
(在 Unix 系统上;您可能必须安装该软件包)之类的程序运行它,或使用简单的 tr
命令是这样的:
编辑:修复了下面 mv
命令中的文件名顺序。
tr -d '\r' </etc/environment >/tmp/environment
# <verify new file looks good>
mv /tmp/environment /etc/environment
请注意,做好备份,检查文件等
您可以通过查看八进制转储来确保文件中没有任何恶意 \r
字符:
od -c /tmp/environment
在输出中查找任何 \r
。
关于ruby-on-rails - Rails 在环境变量中包含返回字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15420785/