【发布时间】:2020-10-24 09:18:44
【问题描述】:
所以我有这个 shell 脚本,它检查环境变量并将其连接到 /etc/environment,然后重新加载文件而无需注销/登录:
#!/bin/sh
portvar="PORT=5000"
echo $portvar
grep -q $portvar /etc/environment && echo "EV already in" || echo $portvar >> /etc/environment
set -a; source /etc/environment; set +a;
当我运行它时,我收到错误./test.sh: 5: ./test.sh: source: not found。但是,如果我直接在终端中运行set -a; source /etc/environment; set +a;,它会很好地更新环境变量。我不知道set 命令是做什么的,我只是在另一个堆栈溢出问题中找到它。
知道为什么它直接在终端中运行而不是在 .sh 文件中运行吗? 谢谢
【问题讨论】:
-
这适用于我在 Windows 中的原样或使用点而不是源。您可以尝试将其作为 sh your_script.sh 运行吗?你在哪个操作系统上运行它?
标签: linux bash ubuntu environment-variables sh