거기에 조건이 있을 수 있나요 /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