里面可以有条件吗/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