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.sh
Você pode então executá-lo assim:
./filename.sh
Se você quiser usar um comando diferente para iniciá-lo, você pode adicionar um alias:
gedit ~/.bashrc
Adicione 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.sh
Para torná-lo não executável, execute:
chmod -x /path/to/file.sh
Por exemplo, eu criei .sh
arquivo:
vi tester12.sh
Depois 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
.sh
pode terminar em.txt
como mostrado aqui, ou não tem nenhuma extensão. - Em vez de apenas
+x
(somente você pode executar o script), usea+x
assim, 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 World
NOTA:
- Primeiro criamos um script contendo
echo Hello World
. - Então confirmamos o script chamado
file_command.txt
está correcto. - Por fim, executamos o script chamando
bash
e passando o nome do script. Obash
comando é realmente armazenar como/bin/bash
e é um executável em todos os sistemas Ubuntu. - Criar um arquivo de comandos evita que você adicione o shebang
#!/bin/bash
como a primeira linha em um script. - Criar um arquivo de comandos evita que você o torne executável com
chmod +x
ouchmod 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.