Raspbian: 重置 Bash 环境变量

Raspbian: Reset Bash environment variables

我试图让 crontab 在我的 Raspberry PI 上工作,我想我搞砸了我的环境变量。我可以通过右键单击并选择执行来从 GUI 执行文件。但是我无法从命令行获取相同的文件到 运行。我可以使用 ls 查看文件 (ChromeTab.sh),但是当我键入 ChromeTab.sh 时,我得到 "bash: ChromeTab.sh: command not found".

我想当我将它放入 crontab 时我搞砸了我的环境变量。

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

我遵循了 Script doesn't run via crontab but works fine standalone 中的示例。

知道我做错了什么吗?

更新: 好的, 在获得更多反对票之前,让我澄清一下我在 Whosebug 上发布问题之前所做的努力。

首先感谢 S. Adam Nissley 的建议。 回答上面列出的步骤。 运行 来自主路径或完全限定路径的这条路径不按规定工作。 错误:bash:ChromeTab.sh:找不到命令

./ChromeTab.sh

我还确保 read/write 并使用

对文件执行权限
chmod +x ./ChromeTab.sh

此外,我的 bash 脚本以以下 shebang

开头
#!/bin/sh

所以,我想说的是,无论是否使用 crontab,手头的问题是我什至无法从命令行执行脚本。这是在我弄乱 crontab 中的环境变量之后开始发生的。我正在寻找一种方法来恢复到至少可以从终端发出 run/execute bash 命令的情况。

我可以有效执行此脚本的唯一方法是通过 GUI(右键单击执行)。

假设你和你的脚本在同一个目录中,你应该能够进入

./ChromeTab.sh

如果不执行,请使用命令

确保它可以执行
chmod +x ./ChromeTab.sh

或者

chmod 755 ./ChromeTab.sh

如果它仍然无法执行,请确保它在脚本的第一行有一个合适的 hashbang,例如 #!/bin/sh#!/bin/bash


当你将它添加到你的 crontab 时,确保它有像

这样的完整路径
/home/pi/bin/ChromeTab.sh  <br/>


编辑:Raspbian
的默认路径和 SHELL 您可以从命令行 检查 您的 PATH 和 SHELL 环境变量,如下所示:

echo $SHELL
echo $PATH

Rasbian 的默认路径是:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games

而默认的SHELL是:

/bin/bash

因此,如果您需要设置它们,则非常简单:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
SHELL=/bin/bash


如果您的环境存在其他问题,您可能希望禁用某些本地设置以查看问题是否出在您的配置文件中。您可以使用 ls -a 列出所有文件,其中包括隐藏文件。 Raspbian 通常在每个用户的主目录中有一个 .bashrc 和一个 .profile。要禁用它们,只需重命名它们:

mv .bashrc .bashrc_disabled
mv .profile .profile_disabled

如果这样可以解决问题,您可以检查文件并进行必要的更正,然后再将它们重命名回原来的名称。