【问题标题】:Raspbian: Reset Bash environment variablesRaspbian:重置 Bash 环境变量
【发布时间】:2015-04-29 22:28:58
【问题描述】:

我试图让 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中的示例进行操作。

知道我做错了什么吗?

更新: 好的, 让我澄清一下在我在 stackoverflow 上发布我的问题之前我做了哪些努力,然后再被否决。

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

./ChromeTab.sh

我还确保了文件的读/写和执行权限

chmod +x ./ChromeTab.sh

另外,我的 bash 脚本以以下 shebang 开头

#!/bin/sh

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

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

【问题讨论】:

  • 您的PATH 看起来很正常。当前工作目录. 不应该在您的PATH 中(如您所愿,如果我正确解释了您的问题),否则您将遇到严重的安全风险。您应该做的是在 crontab 中指定 CrhomeTab.sh 的完整路径。

标签: bash raspberry-pi crontab raspbian


【解决方案1】:

假设你和你的脚本在同一个目录下,你应该可以进入

./ChromeTab.sh

如果它不执行,请确保它可以使用命令执行

chmod +x ./ChromeTab.sh

或者

chmod 755 ./ChromeTab.sh

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


当您将它添加到您的 crontab 时,请确保它具有完整路径,例如
/home/pi/bin/ChromeTab.sh  <br/>


编辑:Raspbian 的默认 PATH 和 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

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

【讨论】:

  • 好的,让我澄清一下我在stackoverflow上发布我的问题之前所做的努力。回答您上面列出的步骤。
  • @NetFlash 我提供了一些关于 Raspbian 默认值的信息。
  • @Adamn,好的,除了重命名 .profile 和 .bashrc 之外,我已经尝试了以上所有方法。您如何通过禁用它们进行故障排除?另一件事,我检查了 /bin 文件夹。 bash 在那里,dash 也在那里,但是 sh 是 dash 而不是 bash 的快捷方式。这是正确的吗?
  • @NetFlash 是的 sh 是指向破折号lrwxrwxrwx 1 root root 4 Dec 31 1969 sh -&gt; dash的符号链接
  • @NetFlash 如果您禁用文件(然后打开一个新终端)并且一切正常,那么您知道其中一个文件有问题。如果是这种情况,您可以确定问题,然后将其命名。在github.com/rosterloh/raspberry-pi/blob/master/configs/.bashrc 有一份.bashrc 的副本
猜你喜欢
  • 2016-03-14
  • 2016-10-07
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 2014-02-24
  • 2017-01-13
相关资源
最近更新 更多