我试图让一个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。
答案 0 :(得分:2)
假设您与脚本位于同一目录中,您应该只能输入
./ChromeTab.sh
如果未执行,请确保使用
命令执行该文件chmod +x ./ChromeTab.sh
或者
chmod 755 ./ChromeTab.sh
如果它仍然无法执行,请确保它在脚本的第一行(如#!/bin/sh
或#!/bin/bash
)上有适当的hashbang
之类的完整路径
/home/pi/bin/ChromeTab.sh <br/>
<小时/> 编辑:Raspbian的默认路径和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
如果这样可以解决问题,您可以检查文件并进行必要的更正,然后再将其重命名为原始名称。