script.sh: source: não encontrado

0

Eu tenho uma pergunta sobre o rc.local. Eu criei um script auto.sh e ele inclui:

#!/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

Meu objetivo é executar esse script automaticamente usando rc.local. arquivo rc.local localizado em:

/etc/init.d/rc.local
O arquivo

rc.local inclui o código:

#!/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

Este código é executável. Eu segui os passos em Como posso fazer "rc.local" executar na inicialização? .

Mas quando eu verifico o código usando:

sudo /etc/init.d/rc.local start

dá um erro no terminal conforme abaixo:

./auto.sh: 4: ./auto.sh: source: not found

Além disso, no terminal XTerm, erros são dados como: error1 error2

Você poderia dizer qual é o meu problema?

    
por moguztas 26.04.2017 / 12:11

1 resposta

2
  1. Você está invocando /bin/sh , que, no Ubuntu, é um shell muito mais simples que /bin/bash e não possui o comando source .

  2. No momento em que rc.local é executado, o /opt/ros/indigo/ está montado? Se for o seu diretório HOME criptografado, ele não existirá até você efetuar login.

  3. No momento em que rc.local é executado, o servidor X ainda não foi iniciado, portanto, executar um xterm não funcionará.

por waltinator 26.04.2017 / 15:58