/etc/rc.local 中可以有条件吗?

/etc/rc.local 中可以有条件吗?

里面可以有条件吗/etc/rc.local?我检查了很多问答,大多数人建议运行chmod +x它,但我的问题是不同的。它实际上无条件地为我工作,但否则不会。

#!/bin/sh

if [[ -e /usr/src/an-existing-file ]]
then
    echo "seen" >> /etc/rclocalmadethis
fi

这是我运行时看到的奇怪错误systemctl status rc-local.service

rc.local[481]: /etc/rc.local: 3: /etc/rc.local: [[: not found

这是我rc.local在完全相同的位置ls -lah /etc/

-rwxr-xr-x  1 root root    292 Sep 19 09:13 rc.local

我使用的是 Debian 10 标准版。

答案1

[[ ... ]]语法对于 无效/bin/sh。尝试:

if [ -e /usr/src/an-existing-file ]
then
    echo "seen" >> /etc/rclocalmadethis
fi

请注意,有时它会起作用,因为/bin/sh -> /bin/bash或其他一些支持该语法的 shell,但您不能依赖这种情况(如您在此处看到的)。

例如,您可以运行ls -l /bin/sh来了解此信息:

lrwxrwxrwx 1 root root 4 Jul 18  2019 /bin/sh -> dash

答案2

[[bash 功能不可用sh

root@d4b4b6325f2a:/# type [[
[[ is a shell keyword
root@d4b4b6325f2a:/# sh
# type [[
[[: not found

答案3

在这种情况下,我可能会查看测试命令。

/usr/bin/test -e /usr/src/an-existing-file && /bin/echo "seen" >> /etc/rclocalmadethis

相关内容