Usando o script / bin / sh -c gnome-terminal para abrir 4 janelas de terminal na inicialização

0

Estou tentando abrir quatro janelas de terminal na inicialização e estou usando o script abaixo para fazer isso. No entanto, é só abrir 1 terminal Window em vez de 4.

/bin/sh -c gnome-terminal; /bin/sh -c gnome-terminal; /bin/sh -c gnome-terminal; /bin/sh -c gnome-terminal

Estou executando o script de dentro de "Aplicativos de inicialização". Se eu executar o script manualmente a partir de uma janela de terminal, ele abrirá 4 janelas de terminal.

Então aqui está a minha pergunta. Por que o script só abre 1 janela de dentro as "Aplicações de Inicialização" quando deveria abrir 4?

    
por Vinnie German 15.05.2015 / 19:17

2 respostas

2

Você não precisa de /bin/sh -c se estiver executando o script. Além disso, use & em vez de ; , assim

#!/bin/bash



gnome-terminal -t WINDOW-ONE &
gnome-terminal -t WINDOW-TWO &
gnome-terminal -t WINDOW-THREE &
gnome-terminal -t WINDOW-FOUR &

Acredito que a razão pela qual ele se comporta como em seu script original é porque o shell está aguardando que cada linha de script seja concluída primeiro, portanto, aguarda a primeira janela ser concluída. Com o & amp ;, você desconecta o gnome-terminal do script e o script pode ir para a próxima linha. Espero que faça sentido

    
por Sergiy Kolodyazhnyy 15.05.2015 / 19:21
0

Não é necessário usar um script separado para executar quatro janelas de terminal no Startup

Você não precisa de um script separado para abrir quatro gnome-terminal windows, você pode simplesmente combiná-los em um comando, para ser adicionado a Startup Applications.

Como usar comandos complexos em um arquivo .desktop

Quando você adiciona um comando a Startup Applications, ele cria um arquivo .desktop em ~/.config/autostart , que executa seu comando na inicialização (na verdade, efetua login). A sintaxe para comandos complexos a serem usados em um arquivo .desktop é a seguinte:

/bin/bash -c "<complicated_command>"

No entanto: Você só precisa usar o tempo /bin/bash -c a único , então o comando completo deve se parecer com:

/bin/bash -c "gnome-terminal&gnome-terminal&gnome-terminal&gnome-terminal"

Ao fazer isso, você não precisa de um script separado para fazer o trabalho.

Comandos de encadeamento

Como já mencionado, você deve encadear os comandos com um & , não com ; .

De man bash :

Se um comando é terminado pelo operador de controle & amp ;, o shell executa o comando em segundo plano em um subshell. O shell não espera que o comando seja concluído e o status de retorno é 0. Comandos separados por um; são executados sequencialmente; o shell aguarda que cada comando termine por sua vez. O status de retorno é o status de saída do último comando executado.

    
por Jacob Vlijm 15.05.2015 / 21:30