У меня есть вопрос о rc.local. Я создал сценарий auto.sh, и он включает:
#!/bin/sh
cd $home
source /opt/ros/indigo/setup.bash
xterm -hold -e "/opt/ros/indigo/bin/roscore" &
xterm -hold -e "/opt/ros/indigo/bin/roslaunch rosbridge_server rosbridge_websocket.launch"
exit 0
Моя цель выполняется к этому сценарию автоматически с помощью rc.local. rc.local файл, расположенный в:
/etc/init.d/rc.local
файл rc.local включает код:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sudo ./auto.sh
sh '/home/moguztas/auto.sh'
exit 0
Этот код является исполняемым файлом. Я выполнил шаги в том, Как я могу заставить "rc.local" работать на запуске?.
Но когда я проверяю использование кода:
sudo /etc/init.d/rc.local start
это дает ошибку в терминале, как дали ниже:
./auto.sh: 4: ./auto.sh: source: not found
Кроме того, как по терминальным ошибкам XTerm дают: error1 error2
Вы могли сказать то, что моя проблема?
Вы вызов /bin/sh
, который, на Ubuntu, является намного более простой оболочкой, чем /bin/bash
и недостает эти source
команда.
В то время rc.local
выполнения, /opt/ros/indigo/
смонтирован? Если это будет Ваш зашифрованный HOME
каталог, то это не будет существовать, пока Вы не войдете в систему.
В то время rc.local
выполнения, X-сервер еще не запустился, так выполнение xterm
не будет работать.