O último comando em arquivos .sh não será executado

3

Eu tenho este script em um arquivo * .sh para habilitar a rolagem natural. Eu adicionei a Startup Application .

#!/bin/sh
xinput set-prop 11 268 -106 -106
nautilus -q && nautilus -n

O problema é que, sempre que eu faço login, o último comando ( nautilus -n ) não roda - o que é chato porque não consigo usar o botão Super para abrir o Dash - e preciso executar o nautilus manualmente. O que há de errado?

ATUALIZAÇÃO:

Eu testei meu script acima no terminal linha por linha e ele funciona bem. Os problemas só aparecem quando eu corro do arquivo .sh.

nautilus -q && touch $HOME/Desktop/reported-success.txt me forneça o arquivo txt,

e o resultado de nautilus -q && nautilus -n &> $HOME/nautilus-output.log é:

Initializing nautilus-open-terminal extension
Initializing nautilus-image-converter extension
Initializing nautilus-dropbox 1.4.0
    
por Nur 03.04.2013 / 19:59

2 respostas

0

Termine o script com um caractere de alimentação de linha / entrada ou uma linha vazia. senão o último comando não será executado.

    
por thom 22.04.2013 / 17:29
2

Bem, a partir do script, isso significa que nautilus -q retornou um código de saída diferente de zero. Por isso, o && é falso e nautilus -n não é executado.

Você diz: execute nautilus -n se nautilus -q tiver êxito. A definição de sucesso é um código de saída de 0 no shell.

Use ; em vez de && para fazer isso incondicionalmente ou use um pequeno script de wrapper para traduzir os possíveis códigos de retorno que você deseja aceitar como "sucesso" em 0 .

Outro método para desativar a execução de nautilus instances é obviamente usar pkill desta maneira:

pkill -u $(whoami) ^nautilus

Você pode querer especificar um sinal específico ( pkill -SIGNALNAME -u ... ), mas não encontrei nenhuma documentação sobre quais sinais nautilus reagem.

O comando acima mata todas as instâncias de nautilus em execução como você (o whoami ).

Use isso para descobrir o que o primeiro comando ( nautilus -q ) retornou:

nautilus -q || echo "exit code: $?"

O que você vê? Se não for 0 , então este é claramente o problema da maneira que a lógica do script sugere.

    
por 0xC0000022L 03.04.2013 / 20:03

Tags