Você deve fazer isso, porque o caminho atual ( pwd ) não está no caminho de pesquisa dos arquivos executáveis.
Digite isto no seu console:
echo $PATH | tr ':' '\n'
Cada pasta impressa está no caminho de busca dos arquivos executáveis (nessa ordem).
Agora, se você deseja executar um arquivo de um diretório diferente , é necessário fornecer o caminho completo (relativo ou absoluto).
./script.sh
significa o diretório atual ( ./ , relativo a onde você está) e o nome do arquivo ( script.sh ). Você pode igualmente usar o caminho completo (a partir da pasta raiz / ) para o seu arquivo (por exemplo, /home/guo/script.sh , se for o seu nome de usuário e quando o arquivo estiver em seu diretório pessoal).
Como uma dica, se você usa esse arquivo regularmente, sugiro criar um diretório local /bin ( ~/bin , como dentro de seu diretório pessoal) e, em seguida, colocar export PATH="$HOME/bin:$PATH" em seu .bashrc , por exemplo. E, em seguida, coloque seus scripts nesse diretório.
Outra coisa: sugiro não usar 777 como permissões para executá-lo. Em vez disso, sugiro 755 , portanto, somente você tem permissão para substituir o arquivo. Se você quiser tornar um arquivo executável use apenas chmod +x script.sh , ele geralmente fará o que você quer.
De maneira semelhante à descrita acima, é possível adicionar o diretório "atual", ao caminho: export PATH=".:$PATH" , mas isso não é aconselhável. Eu aconselho, usando um diretório privado ( ~/bin ) para esses casos de uso.