tornando um script bash executável programaticamente

10

Eu preciso criar um script bash para criar e montar uma unidade. Então, dois comandos simples. Ambos "trabalham" quando inseridos na linha de comando.

O script é criado e executado toda vez que um usuário normal efetua login, então eu preciso de um método para tornar esse script executável naquele momento. Até agora, não consigo fazer isso funcionar. Por exemplo, a primeira parte "mkdir / vvv / gggg" não prossegue porque o script não é executável (suponho).

Espero que isso faça sentido. Isso é possível? Qualquer pensamento sobre como fazer este trabalho será apreciado.

Atualização:

Obrigado pelas suas respostas. Eu provavelmente deveria adicionar algumas informações adicionais além de que sou novo no Linux.

Estou usando um aplicativo de área de trabalho virtual de código aberto chamado Ulteo. Este aplicativo é executado em cima do Ubuntu e tem muito pouco apoio - é por isso que estou aqui. Basicamente, estou aprendendo pelo fogo.

Portanto, o aplicativo tem uma função de gerenciamento de script de login na qual posso vincular um script a um usuário. Um simples script do windows com net use funciona perfeitamente bem. No entanto, quando tento aplicar um script bash do Linux, nada acontece.

Estou pensando que, como preciso executar primeiro chmod +x no script para tornar o script executável, é por isso que ele falha. By the way, Ulteo é executado em uma prisão chroot. Eu criei um script, salvei e não consegui encontrar o script. Eu procurei dentro e fora da prisão chroot.

Eu gosto da abordagem do dan08 para ter o script inicial referenciando outro script que eu possa encontrar e tornar executável manualmente. Eu teria o mesmo problema?

Esta informação adicional esclarece a situação? Agradecemos antecipadamente.

Fotos em anexo. ! [login scipt management console] [1] ! [scripts do windows que funcionam] [2]! [script de linux simples que não funciona] [3]

Desculpe, não posso postar imagens ainda

    
por HIlton Dynamics 09.09.2014 / 14:16

4 respostas

16

Existem duas coisas que você precisa fazer:

  1. Consulte o interpretador de script no início do script:

    #!/bin/bash
    
  2. Defina as permissões para torná-lo executável:

    chmod +x myscript.sh
    
por Ed Manet 09.09.2014 / 15:24
2

Em vez de tornar seu script executável, você pode adotar uma abordagem diferente e alterar a maneira como chama o script.

script.sh é suficiente para executar um script executável.

No entanto

É possível executar um script não executável se você especificar o programa para executá-lo.

Portanto, /bin/bash script.sh ou bash script.sh ou python script.py serão todos executados em scripts não executáveis.

Então, minha sugestão seria editar a maneira como o script é chamado e especificar o binário usado para executá-lo.

    
por dan08 09.09.2014 / 15:09
0

Crie um programa em C, C ++ ou Python, etc. e use o comando system para executar o script bash.

Por exemplo, um programa em C se pareceria com:

#include "stdio.h"
int main(int argc, char const *argv[])
{
    system('chmod +x path/yourbashscript.sh');
    system('path/yourbashscript.sh');
    return 0;
}

Para executar o programa na inicialização, adicione-o à lista de programas de inicialização. Abra os aplicativos de inicialização do seu painel e adicione o executável compilado à lista clicando no botão Adicionar.

    
por akabhirav 09.09.2014 / 14:29
0

Você pode tornar seu script bash executável executando o seguinte na linha de comando.

cd ~/path/to/file
chmod +x nameoffile.sh

Em seguida, executá-lo na inicialização pode ser feito adicionando-o à sua lista de programas de inicialização, como disse @akabhirav.

    
por LanceLafontaine 09.09.2014 / 15:21