/etc/rc.local에 조건이 있을 수 있나요?

/etc/rc.local에 조건이 있을 수 있나요?

거기에 조건이 있을 수 있나요 /etc/rc.local? Q&A를 많이 봤는데 대부분 실행을 권유하셨는데 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

저는 데비안 10 스탠다드 에디션을 사용하고 있습니다.

답변1

[[ ... ]]구문은 에 유효하지 않습니다 /bin/sh. 노력하다:

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

/bin/sh -> /bin/bash때로는 다른 쉘이 해당 구문을 지원하기 때문에 작동할 수도 있지만 여기에 의존할 수는 없습니다(여기에서 볼 수 있듯이).

예를 들어 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

관련 정보