Shell-Script

/etc/rc.local 中是否可以有條件?

  • September 20, 2020

是否可以有條件 inside /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 標準版。

[[ ... ]]語法對/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

[[是 bash 中不可用的功能sh

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

引用自:https://unix.stackexchange.com/questions/610226