Executando um script bash no terminal apenas pelo seu nome [duplicado]

1

Estou tentando seguir este exemplo no Guia do Bash sobre aqui , onde é possível executar um script apenas pelo nome dele em vez de bash scriptname . Primeiro, usei esses três comandos para criar um diretório bin, adicionar seu caminho ao PATH, incluí-lo no arquivo de configuração do bash e, em seguida, recarregá-lo:

$ mkdir -p "$HOME/bin"
$ echo 'PATH="$HOME/bin:$PATH"' >> "$HOME/.bashrc"
$ source "$HOME/.bashrc"

Em seguida, criei um script simples que é assim:

#!/usr/bin/env bash


echo "Hello World"

No entanto, quando tento executá-lo apenas pelo seu nome no terminal, isso me dá o erro:

bash: /home/fieldsofgold/bin/mybashscript: Permission denied

Alguém poderia me ajudar com isso? Obrigado.

EDIT: Saída para ls -l :

fieldsofgold@fieldsofgold-VirtualBox:~$ ls -l
total 152
-rwxrwxr-x  1 fieldsofgold fieldsofgold 13469 Mar 28 17:17 a.out
drwxrwxr-x  2 fieldsofgold fieldsofgold  4096 Aug 12 06:23 bin
drwxr-xr-x  9 fieldsofgold fieldsofgold  4096 Aug 11 07:55 Desktop
drwxr-xr-x  2 fieldsofgold fieldsofgold  4096 Feb 13 19:15 Documents
drwxr-xr-x  3 fieldsofgold fieldsofgold  4096 Aug 11 10:49 Downloads
-rwxrwxr-x  1 fieldsofgold fieldsofgold  8509 Mar 19 12:10 ex1
-rw-rw-r--  1 fieldsofgold fieldsofgold  1852 Mar 25 19:59 ex1.c
-rw-rw-r--  1 fieldsofgold fieldsofgold  1827 Mar 25 12:56 ex1.c~
-rw-rw-r--  1 fieldsofgold fieldsofgold  1773 Mar 25 12:43 ex2.c~
-rw-rw-r--  1 fieldsofgold fieldsofgold  1834 Mar 25 12:36 ex3.c~
-rw-rw-r--  1 fieldsofgold fieldsofgold  1786 Mar 25 12:44 ex4.c~
-rw-r--r--  1 fieldsofgold fieldsofgold  8980 Feb 13 18:27 examples.desktop
-rwxr-xr-x  1 root         root            33 Aug  9 19:32 helloworld.sh
drwxr-xr-x  2 fieldsofgold fieldsofgold  4096 Feb 13 19:15 Music
-rw-rw-r--  1 fieldsofgold fieldsofgold     0 Aug 11 15:10 mybashscript~
drwxrwxr-x  4 fieldsofgold fieldsofgold  4096 Jul 29 20:30 nltk_data
drwxrwxr-x  8 fieldsofgold fieldsofgold  4096 Jul 28 19:48 numpy
-rw-rw-r--  1 fieldsofgold fieldsofgold  1571 Mar 28 08:13 oddEvenTrans22.c
-rw-rw-r--  1 fieldsofgold fieldsofgold    38 Mar 25 15:44 oddEvenTrans.c~
drwxr-xr-x  5 root         root          4096 Jul 28 11:18 openblas
drwxrwxr-x 14 fieldsofgold fieldsofgold  4096 Jul 28 11:18 OpenBLAS
drwxr-xr-x  2 fieldsofgold fieldsofgold  4096 Mar 26 04:25 Pictures
-rw-rw-r--  1 fieldsofgold fieldsofgold     0 Mar 25 19:16 practice.c
drwxr-xr-x  2 fieldsofgold fieldsofgold  4096 Feb 13 19:15 Public
drwxrwxr-x  2 fieldsofgold fieldsofgold  4096 Mar 30 09:12 python
drwxrwxr-x  2 fieldsofgold fieldsofgold  4096 Mar 29 18:05 scans
drwxr-xr-x  2 fieldsofgold fieldsofgold  4096 Feb 13 19:15 Templates
-rw-rw-r--  1 fieldsofgold fieldsofgold    78 Mar 16 06:47 testfile
-rw-rw-r--  1 fieldsofgold fieldsofgold  4606 Feb 15 04:16 Vagrantfile
drwxr-xr-x  2 fieldsofgold fieldsofgold  4096 Feb 13 19:15 Videos
-rw-rw-r--  1 fieldsofgold fieldsofgold    29 Aug  9 16:50 vitestfile
-rw-rw-r--  1 fieldsofgold fieldsofgold   591 Mar 28 08:10 wr
    
por QPTR 12.08.2015 / 08:27

2 respostas

2

Você precisará alterar as permissões. Observe a linha -rw-rw-r-- na linha sobre mybashscript~ . Esses caracteres mostram o nível de permissões do arquivo. Agora você tem isso para que nada possa executar o arquivo, apenas leia ou escreva.

Uma correção fácil é chmod 775 ./mybashscript . Isso alterará esses caracteres para -rwxrwxr-x . Os x adicionados significam que qualquer pessoa também pode executar o código e permitirá que você execute seu código.

Se você está preocupado que alguém possa executar seu código, o que é uma coisa boa se você for uma pessoa com espírito de segurança ou em um computador compartilhado, etc. Você deve procurar em esta página da Web que fala sobre o significado das diferentes permissões de arquivo. Uma vez que você tenha uma compreensão decente de como as permissões funcionam, você pode editá-las de forma que apenas certos usuários possam ler, escrever ou executar o arquivo.

    
por Eric Power 12.08.2015 / 08:59
0

Você não parece ter permissão executável para esse script,

-rw-rw-r--  1 fieldsofgold fieldsofgold     0 Aug 11 15:10 mybashscript

tipo

sudo chmod a+x mybashscript

execute-o com

./mybashscript

Ele será executado

    
por Prashant Chikhalkar 12.08.2015 / 08:59