Por que meu rc.local não roda na inicialização?

0

Esse é um problema duplicado, mas não acredito que seja uma pergunta duplicada, já que nenhuma das respostas dadas para pessoas que sofrem o mesmo problema funciona para mim.

rc.local não é executado na inicialização. É muito simples e contém o seguinte:

#!/bin/sh
#
# 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.

sleep 10

echo "this was written by rc.local" > /home/simon/start_text

exit 0

O "sleep 10" está lá como foi dado como uma possível solução para o problema em outra questão.

O "#! / bin / sh" teve o "-e" removido, já que também foi uma solução sugerida.

/etc/rc.local é executável e é de propriedade do root.

-rwxrwxrwx 1 root root 396 Jan 24 06:06 rc.local

A execução de scripts de inicialização funciona corretamente, por exemplo, "/ etc # ./rc.local" ou ": /etc/init.d# ./rc.local start". Ambos resultarão no arquivo de teste (start_text) sendo escrito.

Estou rodando 12.04 no Virtualbox, não tenho certeza se isso deve fazer alguma diferença.

Não consigo pensar no que verificar em seguida. Idéias por favor.

    
por Simon Roberts 24.01.2015 / 07:31

1 resposta

1

De acordo com a esta documentação do Ubuntu, o shell padrão do sistema no Ubuntu é o Dash , em vez do Bash , enquanto o shell de login padrão é Bash . A saída de ls -al /bin/sh mostra se / bin / sh é um symlink de Dash (mais provável) ou Bash. No meu caso, é Bash:

lrwxrwxrwx 1 root root 4 Apr 8 2014 /bin/sh -> bash

O traço não poderá interpretar echo "this was written by rc.local" > /home/simon/start_text em /etc/rc.local , então você precisa especificar para usar o Bash para interpretar o comando como este

/bin/bash echo "this was written by rc.local" > /home/simon/start_text .

Você pode alterar o shell do sistema padrão para Bash, mas não é recomendado excluindo e recriando os links simbólicos:

rm -f /bin/sh

sudo ln -s /bin/bash /bin/sh

Ou de volta ao Dash:

rm -f /bin/sh

sudo ln -s /bin/dash /bin/sh

    
por aFoP 24.01.2015 / 10:39