Como posso tornar um script executável? [duplicado]

0

Sou novo no Linux. Eu estou tentando fazer um script que imprime algo e inicia um comando de desligamento. Este é o meu script:

#!/bin/bash    

echo Hello WOOOOORRRRRLLLLDDDDDDD

echo sudo poweroff

Toda vez que tento executar meu script usando

chmod +x Hello World BASH

ou     ./Ola Mundo BASH

no entanto, recebo esta mensagem de erro:

chmod: cannot access 'Hello': No such file or directory
chmod: cannot access 'World': No such file or directory
chmod: cannot access 'BASH': No such file or directory

Em geral, toda vez que tento executar esse script, a mensagem de erro "não há arquivo ou diretório" é exibida. Como posso consertar isso?

    
por dabberson567 30.06.2017 / 02:06

2 respostas

0

Resposta curta

Execute estes comandos nesta ordem:

chmod +x "Hello World BASH"
./"Hello World BASH"

Resposta longa

Um nome de arquivo com espaços deve ser citado (com aspas simples ou duplas) ou com escape (com barras invertidas) para que o shell entenda que tudo faz parte do nome do arquivo. Caso contrário, ele quebrará os espaços e interpretará um nome de arquivo ( Hello World BASH ) como três nomes de arquivos ( Hello , World e BASH )

Além disso, chmod +x não executa o script, isso torna o script executável.

A propósito, se você não tem permissões de execução para um determinado arquivo, você pode chamar o interpretador para executá-lo:

bash "Hello World BASH"
    
por wjandrea 30.06.2017 / 02:27
1

Como o nome do arquivo tem espaços, você precisa usar aspas ou escapa para que o espaço não pareça com três nomes de arquivo diferentes:

chmod a+x "Hello World BASH"
"./Hello World BASH"

Ou

chmod a+x Hello\ World\ BASH
./Hello\ World\ BASH
    
por psusi 30.06.2017 / 02:22