bash 脚本中无法访问系统环境变量
System environment variables not accessible in bash script
我 运行正在 Ubuntu Windows 子系统上 Linux,我有一个 bash 脚本,我想 [=34] =] 需要访问系统环境变量。具体来说,我使用以下命令在我的系统上定义了一个环境变量:
export SLACK_LEGACY_API_TOKEN="Insert Token Here"
然后我定义一个名为 slack.sh
的文件,如下所示:
#!/usr/bin/env bash
echo $SLACK_LEGACY_API_TOKEN
我然后运行这个脚本用source ./slack.sh
。当我 运行 这个命令时,它只是打印出一个空行 - 它没有获取环境变量的值。
我在 .sh 文件中尝试了不同的语法来引用环境变量,例如 "$SLACK_LEGACY_API_TOKEN"
和 ${SLACK_LEGACY_API_TOKEN}
但结果相同。我还有 运行 带有 /slack.sh
和 . ./slack.sh
的脚本,但结果相同。
如何让我的脚本看到 $SLACK_LEGACY_API_TOKEN
?
正如@chepner 在我的问题中的评论中提到的,问题是由在我的 Windows 环境中定义 .sh
文件引起的。这会导致文件以 DOS 行结尾保存,这会导致脚本出现问题。完全在 Linux 环境中重新定义文件解决了问题。
我 运行正在 Ubuntu Windows 子系统上 Linux,我有一个 bash 脚本,我想 [=34] =] 需要访问系统环境变量。具体来说,我使用以下命令在我的系统上定义了一个环境变量:
export SLACK_LEGACY_API_TOKEN="Insert Token Here"
然后我定义一个名为 slack.sh
的文件,如下所示:
#!/usr/bin/env bash
echo $SLACK_LEGACY_API_TOKEN
我然后运行这个脚本用source ./slack.sh
。当我 运行 这个命令时,它只是打印出一个空行 - 它没有获取环境变量的值。
我在 .sh 文件中尝试了不同的语法来引用环境变量,例如 "$SLACK_LEGACY_API_TOKEN"
和 ${SLACK_LEGACY_API_TOKEN}
但结果相同。我还有 运行 带有 /slack.sh
和 . ./slack.sh
的脚本,但结果相同。
如何让我的脚本看到 $SLACK_LEGACY_API_TOKEN
?
正如@chepner 在我的问题中的评论中提到的,问题是由在我的 Windows 环境中定义 .sh
文件引起的。这会导致文件以 DOS 行结尾保存,这会导致脚本出现问题。完全在 Linux 环境中重新定义文件解决了问题。