Raspbian:重置Bash环境变量

时间:2015-04-26 00:09:25

标签: bash raspberry-pi crontab raspbian

我试图让一个crontab在我的Raspberry PI上工作,我想我搞砸了我的环境变量。我可以通过右键单击并选择执行来从GUI执行文件。但是我无法从命令行运行相同的文件。我可以使用ls查看文件(ChromeTab.sh),但是当我输入ChromeTab.sh时,我会收到&#34; bash:ChromeTab.sh:找不到命令&#34; < /强>

当我把它放在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中的示例进行了操作。

知道我做错了吗?

更新 好, 让我澄清一下我在将什么问题发布到stackoverflow之前我采取了哪些措施,然后再获得downvotes。

首先感谢S. Adam Nissley的建议。 回答上面列出的步骤。 从主路径或完全限定路径运行此操作不符合规定。 错误:bash:ChromeTab.sh:找不到命令

./ChromeTab.sh

我还使用

确保了文件的读/写和执行权限
chmod +x ./ChromeTab.sh

另外,我的bash脚本从以下shebang

开始
#!/bin/sh

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

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

1 个答案:

答案 0 :(得分:2)

假设您与脚本位于同一目录中,您应该只能输入

./ChromeTab.sh

如果未执行,请确保使用

命令执行该文件
chmod +x ./ChromeTab.sh

或者

chmod 755 ./ChromeTab.sh

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

<小时/> 将它添加到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

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