rc.local
시작 시 간단한 bash 스크립트를 실행하는 줄이 있습니다 . 운영 체제는 "Witty Pi 2" 전원 관리 보드(UUGear)가 있는 Raspberry Pi 3B+의 Raspbian Stretch 4.14입니다.
bash /home/pi/Desktop/mount_and_run.bash &
bash 스크립트가 실행되고 있지 않은 것으로 보이며 syslog
오류가 처음에 파일을 찾지 못한 것과 관련이 있을 수 있음을 나타냅니다. bash 파일을 읽고 있다는 표시는 없습니다. 단서는 다음과 같습니다 var/log/syslog
.
May 27 22:04:12 raspberrypi rc.local[417]: /home/pi/Desktop/mount_and_run.bash: line 30: cd: HOME not set
/home/pi
터미널에 들어가면 Raspberry는 $HOME( )이 무엇인지 아는 것 같습니다.
pwd; echo ~; echo $HOME
.NET을 사용하여 데스크탑에서 bash 파일을 읽을 수도 있습니다 nano
. 이전에는 이런 일이 발생하는 것을 본 적이 없으며 이전 사례에서는 스크립트가 제대로 작동했습니다 rc.local
. 귀하의 통찰력과 제안된 수정 사항에 대해 매우 감사드립니다. Stretch 설치가 새로워졌으며 테스트하고 조사하는 데 몇 시간을 보냈습니다...
답변1
문제는 찾기 스크립트에 있는 것이 아닙니다. 문제는 이 변수가 정의되지 않은 환경(실행 환경) $HOME
의 값 에 의존하고 있다는 것입니다. 일반적으로 값은 로그인한 후에만 사용할 수 있습니다(크론 작업과 같이 문서화된 다른 위치에서도 사용할 수 있습니다).rc.local
$HOME
$HOME
값 을 암시적으로 (인수 없이) 사용하거나 물결표 확장에 사용하기 때문에 값이 있어야 합니다.cd
이 문제를 해결하는 한 가지 방법은 $HOME
스크립트에서 명시적으로 설정하는 것입니다.
HOME=${HOME:-/home/pi}
export HOME
이미 설정되어 있고 null이 아닌 경우가 아니면 설정됩니다 $HOME
./home/pi
실행 중인 명령은 rc.local
루트로 실행되고 있습니다. 특정 사용자로 스크립트를 실행하려면 다음을 사용하십시오.
su username -c bash /home/pi/Desktop/mount_and_run.bash &
존재하다 rc.local
.
특정 사용자에 대해 적절한 값을 설정하여 su -l username -c bash ...
전체 로그인을 시뮬레이션하는 데 사용할 수도 있습니다 .$HOME
답변2
에 나열된 모든 항목은 rc.local
에 의해 실행됩니다 root
.
어떤 이유로 HOME
변수가 런타임에 설정되지 않는 것 같습니다 rc.local
(이로 인해 /root/
일반 사용자가 아래에 있기를 원한다고 생각합니다 /home/user/
).
이 문제를 해결하려면 $HOME
스크립트의 전체 경로를 바꾸십시오 /home/user/
.