Execute alguns arquivos shell a partir de outro arquivo shell em local diferente

0

Eu tenho 5 arquivos shell em locais específicos no meu sistema Ubuntu. Eu tenho dois usuários neste sistema userA , que é o usuário principal e userB . Atualmente eu tenho que abrir manualmente um terminal usando o usuário userA e então executar uma sequência de alguns comandos do terminal que inclui a execução de 4 dos 5 arquivos shell que eu tenho, então eu abro outro terminal e mudo para userB de alguns comandos e 1 arquivo shell. O que eu quero fazer é ter dois arquivos shell na área de trabalho (por exemplo, userA.sh e userB.sh ) e quando clico duas vezes no userA.sh , ele abre um terminal usando userA e executa a sequência de comandos que inclui a execução de quatro arquivos de shell, e quando eu clico duas vezes no userB.sh ele abrirá outro terminal e mudará para userB e então executará uma sequência de alguns comandos que inclui um script de shell.

EDITAR:

Foi o que fiz de acordo com a sugestão de Muru: Eu criei um scriptA.sh na área de trabalho e torná-lo executável, então isso era conteúdo:

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

mas 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 22.09.2014 / 10:47

1 resposta

1

Você terá que usar sudo em algum lugar. Vamos usá-los nos scripts:

#! /bin/bash
#userA.sh

sudo -u userA bash -c '/path/to/script1.sh; /path/to/script2.sh; ... \
    /path/to/scriptn.sh; 

Similarmente para userB . Considere criar um arquivo .desktop para ambos os scripts, ou fazê-los rodar em clique duas vezes . Em seguida, considere dar-se perissões sem senha para ambos os scripts:

sudo tee -a /etc/sudoers.d/user-scripts <<EOF
$USER ALL = (ALL) NOPASSWD: /path/to/userA.sh, /path/to/userB.sh
EOF

Se você quiser digitar as senhas, faça-as rodar em um terminal (depende de como você executa o script), ou use pkexec em vez de sudo .

    
por muru 22.09.2014 / 10:59