script de shell não funcionando no terminal -- gnome campo com gnome-terminal campo com scripts camp askubuntu Relacionado O problema

shell script not running on terminal


0
vote

problema

português

Eu criei um scriptA.sh na área de trabalho e torná-lo executável, então este 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 nisto para abrir o terminal e executar os dois comandos e manter o terminal aberto. Mas o que realmente acontece depois de clicar duas vezes e escolhendo ABCDEFGHIJKLMNABCDEFGHIJKLMN5 Opção, o terminal é aberto por um segundo e, em seguida, se fecha. Eu não sei por que isso está acontecendo, então eu apreciaria se alguém pudesse, por favor, aconselhar por que isso está acontecendo e como superá-lo.

english

I created a scriptA.sh on the desktop and make it executable then this was it content:

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

I want to double click on this to open terminal and run the two commands in it and keep terminal opened. But what actually happens after double clicking it and choosing to run with terminal option, the terminal opens for a second and then closes itself. I don't know why this is happening, so I'd appreciate if anyone could please advise why this is happening and how to overcome it.

        
     
     

Lista de respostas

2
 
vote
vote
Melhor resposta
 

Você provavelmente deseja usar gksudo se quiser iniciá-lo na sua área de trabalho. Que 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 irá fechar logo após a impressão de algumas mensagens de erro.


update

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

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

Então 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 seu comando cd ... . Para obter variáveis ​​específicas, você provavelmente deseja usar o ABCDEFGHIJKLMNABCDEFGHIJKLMN6 .

  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 você precise no script de perfil.

 

You probably want to use gksudo if you want to start it from your Desktop. That will open a window asking you for your password.

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

Also to debug, you probably want to run that script in your terminal first. That way it will not close just after printing some error messages.


Update

One way to do that is to create a file as follow:

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

Then put something like this in it:

#!/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 

That works great for me, in general. The gnome-terminal accepts parameters so you can change various settings.

Use --working-directory=... instead of your cd ... command. To get specific variables, you probably want to use the --profile=... option.

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

Then create the profile script for the variable:

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

Obviously you could add any other alias or anything else you need in the profile script.

 
 
         
         
2
 
vote

Por padrão, quando você escolhe a opção para "Executar em uma janela de terminal", a janela (Gnome-) terminal fecha depois de terminar. faz aberto, já que você menciona que se abre por um segundo. Você pode fazer ficar aberto alterando a configuração no seu perfil do terminal:

No menu (GNOME-terminal), escolha "Editar" & GT; "Configurações do perfil" & gt; "Título e comando". Na opção "Quando a comando sai" Escolha "Segure o terminal aberto".

Isso deve funcionar.

Digite a descrição da imagem aqui

 

By default, when you choose the option to "run in a terminal window", the (gnome-) terminal window closes after it is finished. It does open, since you mention it opens for a second. You can make it stay open by changing the setting it in your terminal profile:

From the (gnome-terminal) menu, choose "Edit" > "Profile Settings" > "Title and Command". In the option "When command exits" choose "Hold the terminal open".

That should work.

enter image description here

 
 
 
 

Perguntas relacionadas

135  Como executar um script apenas clicando duas vezes como arquivos .exe no Windows?  ( How to execute a script just by double clicking like exe files in windows ) 
Como posso fazer um executável de script bash clicando duas vezes como .exe arquivos no Windows? Eu tentei Criando um lançador e atribuir o script a ele , ...

9  Como desligar o Ubuntu depois (2 horas) de ocioso?  ( How to shutdown ubuntu after 2 hours of idle ) 
em execução: xubuntu 14.04 32bit. Eu li vários desatualizados, não trabalhando, trabalhando diferente que quero respostas aqui e em outro lugar. Eu tinha um...

0  Estágios diferentes no Bash Programming  ( Different stages in bash programming ) 
Eu tenho um programa bash com diferentes estágios como: $stage=1 if [ stage -le 1]; then echo "execute stage 1" fi if [ stage -le 2]; then echo "execute s...

2  Como monitorar um arquivo local para alterações, aplique um regex Substituir e salve / sobrescreva em um arquivo de destino?  ( How to monitor a local file for changes apply a regex replace on it and save ov ) 
Eu gostaria de iniciar um script ou algo que assiste a um arquivo de texto para alterações. Quando o arquivo é alterado, eu quero executá-lo através de um ana...

3  dpkg sem shell  ( Dpkg with no shell ) 
Como executar o dpkg sem shell? Aqui está o meu problema: Eu furo e script autorun.sh na minha chave USB. Para executar este script, criei regras em /e...

0  Script Shell para instalar o software e configurar a rede  ( Shell script to install software configure network ) 
Ei, eu queria saber, como, depois de uma nova instalação do Ubuntu, eu posso instalar todos os softwares essenciais (VLC, Apache, MySQL, PHP, Java, NetBeanSet...

2  Abra a pasta pai de um link simbólico por clique com o botão direito do mouse?  ( Open the parent folder of a symbolic link via right click ) 
Podemos abrir uma pasta pai de qualquer arquivo usando o script nautilus como #!/bin/bash nautilus "$1" Se eu fizer este script no link simbólico que...

6  Minha função de bash é executada apenas uma vez por terminal aberta  ( My bash function runs only once per terminal opened ) 
Quando eu tento executar minha função bash, definida em .bashrc, por uma segunda vez no mesmo terminal, ela não funciona. O código é o seguinte: lspci6 ...

11  Execute scripts automaticamente no servidor após conexão SSH  ( Run scripts automatically in server after ssh connection ) 
Como executar um script automaticamente no servidor em breve após o sistema do cliente, estabeleça conexão SSH com o servidor para ex: Suponha que um usuári...

22  Bash Script não executando de Crontab [Duplicate]  ( Bash script not executing from crontab ) 
. Esta pergunta já tem respostas aqui : Por que os scripts crontab não estão funcionando? ...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.