Eu tenho um script.sh o arquivo e o tipo desse arquivo são o arquivo shellscript. Eu quero fazer este arquivo como application / x-executable file. Como posso fazê-lo?
Você pode marcar o arquivo como executável:
chmod +x filename.shVocê pode então executá-lo assim:
./filename.shSe você quiser usar um comando diferente para iniciá-lo, você pode adicionar um alias:
gedit ~/.bashrcAdicione isso no final do arquivo:
alias <new name>='/home/<full path to script>/filename.sh'Abra uma nova sessão ou tipo de terminal source ~/.bashrc em seu terminal para aplicar.Em seguida, basta usar o novo nome para iniciar o script.
Existem duas maneiras de tornar um arquivo executável:
Método GUI:
Clique com o botão direito do mouse no arquivo e selecione Propriedades.Vá para a guia Permissões e marque a caixa Execute: [ ] Allow executing file as program ou em Nautilus Program: [ ] Allow this file to run as a program em Thunar.
Método Terminal / comando:
Você pode usar:
cd /to/my/required/directory
Executar
chmod +x filename.extension
Ou apenas correr:
chmod +x /path/to/your/filename.extension
chmod também tem algumas opções mais avançadas:
Os espaços são para mostrar que está dividido: - rwx --- ---
O primeiro conjunto de --- é Usuário. O segundo é grupo e o último é outro (qualquer outra pessoa)
R significa leitura, w para gravação e X para execução.
Então, para permitir que todos o leiam, mas apenas o grupo para executar e o Usuário para ler e escrever (mas por algum motivo não executar) 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, como é 1,2 e 4)
Portanto, existem esses números:
Executar pelo Usuário é 100.Executar por grupo é 010.Executar por outro é 001.
Escrever pelo Usuário é 200.Escrever por grupo é 020.Escrever por outro é 002.
Ler pelo Usuário é 400.Leia por grupo é 040.Lido por outros é 004.
Em seguida, adicione-os para obter a combinação desejada.
Então, para permitir que todos o leiam, mas apenas o grupo para executar e o Usuário para escrevê-lo (mas por algum motivo não executar) seria:
400 + 040 + 004 e 010 e 200
Isso soma-se a 600 + 050 + 004 = 654.
Você poderia então executar o comando.
chmod +654 /path/to/file.extension para configurá-lo.
E para definir todas as permissões que 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 quaisquer outras permissões (por exemplo, executar permissões).
Site tem uma pequena coisa de caixa de seleção de grade muito útil, em que você pode marcar as opções desejadas e dá - lhe o comando:
No entanto, nem todas as combinações possíveis são sensatas de usar; as principais que são usadas são as seguintes:
755 - Owner tem tudo, e Group e Other pode ler e executar
700 - Owner ter
644 - Owner pode ler e escrever, e Group e Other pode ler
600 - Owner pode ler e escrever
E, se você estiver usando grupos de usuários não triviais:
775 - Owner pode ler e escrever, e Group e Other pode ler
770 - Owner e Group tenha tudo, e Other pode ler e executar
750 - Owner tem tudo, e Group pode ler e executar
664 - Owner e Group pode ler e escrever, e Other pode apenas ler
660 - Owner e Group pode ler e escrever
640 - Owner pode ler e escrever, e Group pode ler
777 e 666 raramente são usados, exceto em / tmp.
Obrigado Ilmari Karonen para sublinhar aqueles em uso comum!
Executar:
chmod +x /path/to/file.shPara torná-lo não executável, execute:
chmod -x /path/to/file.shPor exemplo, eu criei .sh arquivo:
vi tester12.shDepois de escrever algum código no editor vi, saio do editor vi:
:wq!chmod +x tester12.sh./tester12.sh
Deixe todos os usuários executarem seu script
Conforme declarado, você pode definir o bit de execução do arquivo para torná-lo executável com chmod +x. Mas você também pode usar chmod a+x:
$ ll file_command.txt-rw-rw-r-- 1 rick rick 17 Sep 19 08:55 file_command.txt$ chmod a+x file_command.txt$ ll file_command.txt-rwxrwxr-x 1 rick rick 17 Sep 19 08:55 file_command.txt*NOTA:
- Um script não precisa terminar com
.shpode terminar em.txtcomo mostrado aqui, ou não tem nenhuma extensão. - Em vez de apenas
+x(somente você pode executar o script), usea+xassim, todos os usuários podem executar o script. - O nome do arquivo tem um
*anexado a ele para indicar que é executável. Além disso, o nome do arquivo muda de cor para verde na maioria dos sistemas.
Execute um script sem torná-lo executável
Você ainda pode executar um script bash sem torná-lo executável. Por exemplo:
$ echo "echo Hello World" > file_command.txt$ cat file_command.txtecho Hello World$ bash file_command.txtHello WorldNOTA:
- Primeiro criamos um script contendo
echo Hello World. - Então confirmamos o script chamado
file_command.txtestá correcto. - Por fim, executamos o script chamando
bashe passando o nome do script. Obashcomando é realmente armazenar como/bin/bashe é um executável em todos os sistemas Ubuntu. - Criar um arquivo de comandos evita que você adicione o shebang
#!/bin/bashcomo a primeira linha em um script. - Criar um arquivo de comandos evita que você o torne executável com
chmod +xouchmod a+x.
relacionado a [como faço para executar arquivos .sh no Terminal?] (command line - How do I run .sh scripts? - Ask Ubuntu)
Possível duplicata de [Como faço para executar arquivos .sh?] (command line - How do I run .sh scripts? - Ask Ubuntu)
Não é uma duplicata, porque perguntei especificamente sobre como torná-la application/x-executável. A outra pergunta apenas pede para abrir o arquivo SH no terminal.


