comando não está sendo executado no rc.local, mas funciona no terminal

0

Meu arquivo rc.local inteiro

#!/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.
cd ~/xcape && ./xcape -e 'Control_L=Escape'
exit 0

Isto supostamente faz com que minha tecla caps lock (que é configurada para controle Left) se torne uma tecla de escape quando pressionada por si mesma, e seja ctrl quando pressionada e pressionada.

O comando no arquivo rc.local funciona bem quando eu faço isso no terminal, mas quando eu inicializo meu computador, eu tenho que executar o comando manualmente porque o arquivo rc.local não executou o comando. ou falhou.

    
por John Curry 29.10.2014 / 00:54

2 respostas

3

Evite o ~ no script, use o caminho completo do diretório. Não só existe outro interpretador de scripts em execução (traço em vez de bash) que não entende a convenção ~, o script está sendo executado como root, assim, mesmo se ~ foi entendido, seria o diretório inicial errado.

    
por ubfan1 29.10.2014 / 01:06
2

Quando rc.local é executado durante a inicialização, ele é executado como raiz e o ambiente é restrito.

Você deve alterar ~/xcape com /home/yourUser/xcape .

Para verificar seu script /etc/rc.local , você deve usar este comando:

 sudo service rc.local start
    
por Lety 29.10.2014 / 01:07