Eu tenho um arquivo script.sh e o tipo desse arquivo é um arquivo shellscript. Eu quero tornar esse arquivo como aplicativo / arquivo x-executável. Como posso fazer isso?
command-line
executable
Ziyaddin Sadigov
fonte
fonte
Respostas:
Você pode marcar o arquivo como executável:
Você pode executá-lo assim:
Se você quiser usar um comando diferente para iniciá-lo, poderá adicionar um alias:
Adicione isso no final do arquivo:
Abra uma nova sessão do terminal ou digite
source ~/.bashrc
seu terminal para aplicar. Em seguida, basta usar o novo nome para iniciar o script.fonte
./filename.sh
e não apenasfilename.sh
?filename
e não./filename
./filename.sh
especifica um arquivo no diretório atual e o usofilename.sh
especifica um arquivo no diretório atual ou em qualquer diretório do PATH. O primeiro uso remove qualquer incerteza sobre qual arquivo é acessado. Nesse caso, você está tentando executar o script com bash ou outro intérprete (em virtude de assumido#!/bin/bash
como primeira linha no seu script) apenas digitando o nome do arquivo. Esse uso requer que o diretório seja especificado. Como alternativa, você pode tentar obash filename.sh
que parece funcionar com o diretório não especificado.Existem duas maneiras de tornar um arquivo executável:
Método da GUI:
Vá para a guia permissões e marque a caixa `Executar: [] Permite executar o arquivo como programa.
Terminal / método de comando:
Você pode usar:
cd /to/my/required/directory
Então corra
chmod +x filename.extension
Ou apenas execute:
chmod +x /path/to/your/filename.extension
chmod
também possui algumas opções mais avançadas:Os espaços devem mostrar que está dividido:
- rwx --- ---
O primeiro conjunto de
---
é Usuário. O segundo é o grupo e o último é outro (qualquer outra pessoa)r significa Read, w para Write e x para eXecute.
Portanto, para permitir que todos os leiam, mas apenas o Grupo execute e o Usuário leia e escreva (mas por algum motivo não execute) seria:
-rw- rx- r--
Mas isso seria adicionado ao comando como:chmod +rw-rx-r-- /path/to/file.extension
chmod
também pode fazer isso em números. É baseado em binário (eu acho, pois é 1,2 e 4)Portanto, existem estes números:
Executar pelo usuário é
100
. Executar por grupo é010
. Executar por outro é 001Escrever por usuário é
200
. Escreva por grupo é020
. Escreva por outro é002
.Lido pelo usuário é
400
. Lido por grupo é040
. Leia por outro é004
.Em seguida, adicione-os para obter a combinação desejada.
Portanto, para permitir que todos os leiam, mas apenas o Grupo execute e o Usuário escreva (mas por algum motivo não execute) seria:
400 + 040 + 004
e010
e200
Isso soma 600 + 050 + 004 = 654.
Você pode então executar o comando.
chmod +654 /path/to/file.extension
para configurá-lo.E para definir todas as permissões, você pode digitar:
chmod +rwxrwxrwx /path/to/file.extension
Ou (isso é um pouco mais fácil de escrever, mas mais difícil de lembrar de cada um):
chmod +777 /path/to/file.extension
Finalmente, você pode fazer:
chmod -777 /path/to/file.extension
Para tirar todas as permissões de todos.
E:
chmod +300 /path/to/file.extension
Para adicionar leitura e gravação para o usuário, sem afetar outras permissões (por exemplo, permissões de execução).
Este site possui uma caixa de seleção de grade muito útil, na qual você pode marcar as opções desejadas e fornecer o comando:
No entanto, nem todas as combinações possíveis são sensatas ao uso; Os principais usados são os seguintes:
755 -
Owner
tem tudoGroup
eOther
pode ler e executar700 -
Owner
tem tudo644 -
Owner
pode ler e escreverGroup
eOther
pode ler600 -
Owner
sabe ler e escreverE, se você estiver usando grupos de usuários não triviais:
775 -
Owner
pode ler e escreverGroup
eOther
pode ler770 -
Owner
eGroup
tem tudo, eOther
pode ler e executar750 -
Owner
tem tudo eGroup
pode ler e executar664 -
Owner
eGroup
pode ler e escrever, eOther
pode apenas ler660 -
Owner
eGroup
pode ler e escrever640 -
Owner
pode ler e escrever eGroup
pode ler777 e 666 raramente são usados, exceto em / tmp.
Obrigado Ilmari Karonen por apontar os que são de uso comum!
fonte
Corre:
Para torná-lo não executável, execute:
Por exemplo, eu criei o
.sh
arquivo:Depois de escrever algum código no vi editor, vou sair do vi editor:
fonte