bash: / root / bin / hello_world: Permissão negada

4

Estou usando o CentOS 7.

  1. Eu escrevi meu primeiro script bash como este.

    #!/bin/bash
    echo 'this is my first code'
    

    e eu salvei como hello_world

  2. Eu fiz um diretório no meu diretório raiz home.

    mkdir bin
    
  3. Em seguida, movi o script para o diretório ~/bin .

  4. Então eu fiz isso:

    export PATH=~/bin:"$PATH"
    source ~/bin
    
  5. Depois tentei executar o script com o comando abaixo.

    hello_world 
    

mas não vi o this is my first code , mas recebi um erro bash: /root/bin/hello_world: Permission denied .

    
por Dean Zhang 22.05.2018 / 07:24

1 resposta

5

Para que um script seja executável sem executá-lo com um intérprete explícito (como em bash ~/bin/hello_world ), o arquivo de script deve ter seu conjunto "bit executável". Isso é feito com chmod (consulte o manual):

chmod u+x ~/bin/hello_world

Isso define o bit executável para o proprietário do arquivo.

Ou

chmod +x ~/bin/hello_world

Isso define o bit executável de acordo com seu umask atual. Supondo que seu umask seja 022 (um padrão comum), isso o tornará executável para todos os usuários.

A etapa source que você fez é um absurdo e deveria ter fornecido uma mensagem de erro (não é possível criar um diretório).

Se você precisar que a configuração do novo PATH seja "permanente", adicione a linha export PATH ao arquivo de inicialização do seu shell ( ~/.bashrc se você estiver usando bash como seu shell interativo).

Além disso, evite trabalhar em um prompt raiz interativo. Use uma conta de usuário sem privilégios para testar e explorar e use sudo dessa conta nas poucas vezes em que você precisa executar tarefas administrativas.

    
por 22.05.2018 / 07:30