ruby
  • raspberry-pi
  • dashing
  • 2017-11-29 13 views 1 likes 
    1

    라즈베리 파이가 부츠를 때 자동으로 대시 보드를 시작하려고합니다. crontab의 @reboot 옵션을 통해 스크립트를 실행할 계획입니다 (이미 자동으로 대시 보드를 종료하는 것과 비슷합니다). 그러나 아래 스크립트를 실행하는 데 문제가 있습니다.디렉토리로 이동하고 해당 디렉토리에서 스매싱/달리기를 실행하십시오.

    command = 'cd "/home/pi/test"' 
        command2 = 'smashing start' 
    
    
        system "echo hi" 
        system command 
        puts command 
        system "echo Movement" 
        system command2 
        puts command2 
    
    The script itself is just being run from the terminal just now using 
    
        ruby /home/pi/start_up.rb. 
    

    스매싱 작업 디렉토리 스크립트가 나는 다음과 같은 오류를받을 실행할 때와 cd "home/pi/test" 명령을 통해 이동하지 않기 때문에 실패 할 나타납니다부터 확실히 Gemfile이 테스트 디렉토리에 있습니다

    Could not locate Gemfile or .bundle/ directory 
    

    . 이것은 홈/pi 폴더에서 직접 smashing start을 실행하면 폴더가 이동하지 않는다는 것을 나타내는 것과 같은 오류입니다. 이 작업을 수행하는 올바른 방법이 있습니까? 조언을 주시면 감사하겠습니다.

    +0

    왜 스크립트에서'cd'하지 않습니까? –

    답변

    1

    cd은 쉘이 내장되어 있기 때문에 cd "/home/pi/test"이 작동하지 않았습니다. 쉘에서 디렉토리를 변경했지만 Ruby에서는 변경하지 않았습니다.

    은 루비의 디렉토리를 변경

    Dir.chdir '/home/pi/test' 
    

    각 프로세스는 자신의 현재 디렉토리가 사용합니다. Ruby의 Kernel#system은 셸 프로세스 (아마 /bin/sh)를 실행하여 명령을 실행 한 다음 셸이 종료 될 때까지 대기합니다. 쉘이 디렉토리를 변경 한 후 종료되었습니다. Ruby는 디렉토리를 변경하지 않았습니다.

     관련 문제

    • 관련 문제 없음^_^