shell script não está sendo executado no terminal

0

Eu criei um scriptA.sh na área de trabalho e o tornei executável, então foi o conteúdo:

#!/bin/bash
sudo -u userA bash -c 'PACKAGE_PATH=/home/userA/package1; cd /home/userA/scripts'

Eu quero clicar duas vezes sobre isso para abrir o terminal e executar os dois comandos nele e manter o terminal aberto. Mas o que realmente acontece depois de clicar duas vezes nele e escolher a opção run with terminal , o terminal abre por um segundo e depois se fecha. Eu não sei por que isso está acontecendo, então eu apreciaria se alguém pudesse, por favor, informar por que isso está acontecendo e como superá-lo.

    
por Tak 23.09.2014 / 04:03

2 respostas

2

Você provavelmente deseja usar gksudo se quiser iniciá-lo a partir da sua área de trabalho. Isso abrirá uma janela pedindo sua senha.

#!/bin/bash
gksudo -u userA bash -c 'PACKAGE_PATH=/home/userA/package1; cd /home/userA/scripts'

Também para depurar, você provavelmente deseja executar esse script no seu terminal primeiro. Dessa forma, não será fechado logo após a impressão de algumas mensagens de erro.

Atualizar

Uma maneira de fazer isso é criar um arquivo da seguinte forma:

/home/user_name/.gnome2/panel2.d/default/launchers/script_name.desktop

Em seguida, coloque algo assim:

#!/usr/bin/env xdg-open

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=gdu-category-peripheral
Name[en_US]=Receiving fax
Exec=gksu /usr/bin/gnome-terminal
Comment[en_US]=Some description...
Name=My Script
Comment=Start my script
Icon=gnome-panel-launcher

Isso funciona muito bem para mim, em geral. O gnome-terminal aceita parâmetros para que você possa alterar várias configurações.

Use --working-directory=... em vez do comando cd ... . Para obter variáveis específicas, você provavelmente desejará usar a opção --profile=... .

Exec=gksu -u userA /usr/bin/gnome-terminal --profile=/home/userA/profile --working-directory=/home/userA/scripts

Em seguida, crie o script de perfil para a variável:

# In /home/userA/profile
PACKAGE_PATH=/home/userA/package1

Obviamente, você pode adicionar qualquer outro alias ou qualquer outra coisa que precisar no script de perfil.

    
por Alexis Wilke 23.09.2014 / 04:07
2

Por padrão, quando você escolhe a opção "executar em uma janela de terminal", a janela do terminal (gnome-) é fechada após a conclusão. abre, já que você menciona que abre por um segundo. Você pode fazê-lo ficar aberto alterando a configuração no seu perfil de terminal:

No menu (gnome-terminal), escolha "Editar" > "Configurações do perfil" > "Título e Comando". Na opção "Quando o comando sai", escolha "Manter o terminal aberto".

Isso deve funcionar.

    
por Jacob Vlijm 23.09.2014 / 06:54