O script é executado quando eu o digito em um terminal, mas não quando eu o executo a partir de um arquivo .sh

1

Eu queria executar isso na inicialização porque gosto de brincar com vários DEs. Quando eu executo este script de um arquivo, ele não roda o Docky.

Eu já alterei as permissões do arquivo para que ele possa ser executado como um programa.

Quando digito exatamente isso no gnome-terminal, ele executará o Docky se eu estiver logado no gnome-classic. Eu queria rodar este script na inicialização para que o Docky não iniciasse no Unity:

if [ $DESKTOP_SESSION == "gnome-classic" ] ; then docky ; fi

Alguma sugestão? Eu tentei escrever algo como o Firefox no mesmo arquivo e ele irá iniciar o Firefox. Então, quando eu corro o seguinte script de um arquivo ...

cd /home/user/Desktop
mkdir ITRAN
if [ $DESKTOP_SESSION == "gnome-classic" ] ; then docky ; fi

Ele cria um novo arquivo na minha área de trabalho, mas não executa o Docky mesmo que, se eu simplesmente copiar o mesmo código em uma janela de terminal, ele seja executado ...

Com a ajuda do geirha, mudei o roteiro. No entanto, agora o docky é iniciado, não importa o DE que eu execute, o Unity ou o gnome-classic.

#!/bin/sh
if [ $DESKTOP_SESSION = "gnome-classic" ]; then
   docky
fi

Eu também tentei

$DESKTOP_SESSION = "gnome-classic"
$DESKTOP_SESSION = gnome-classic
"$DESKTOP_SESSION" = gnome-classic
"$DESKTOP_SESSION" = "gnome-classic"

para descartar a possibilidade de que eu tenha errado essa parte.

    
por utsuro 28.06.2012 / 00:15

2 respostas

4

O comando [ não possui um operador == . Bash permite, mas o traço vai encolher. O operador correto a usar é = . O script que você publicou na sua pergunta não tem um shebang, então é provável que seja executado por sh . Então:

#!/bin/sh
mkdir -p "$HOME/Desktop/ITRAN"
if [ "$DESKTOP_SESSION" = gnome-classic ]; then
    docky
fi

De qualquer forma, se falhar, você provavelmente encontrará as mensagens de erro em ~/.xsession-errors , então procure por pistas.

    
por geirha 28.06.2012 / 00:32
0

Verifique se o seu script começa com:

#!/bin/sh

Além disso, verifique se seu script é executável:

chmod a+x path/to/your/script.sh
    
por jasmines 28.06.2012 / 00:28