A única coisa que causaria isso é se o script não é executável. Eu sei que você disse que o bit executável está definido, mas certifique-se:
chmod +x scriptname.sh
Talvez alguém aqui possa me ajudar. Ter instalado o Ubuntu 12.04 LTS (kubuntu) em duas máquinas. Os arquivos .bashrc e .bash_profile são idênticos, pois as estruturas de arquivos em cada máquina são as mesmas.
Na máquina 1 eu executo scripts bash dentro de uma janela de terminal com o simples: ./scriptname.sh
Na máquina 2, não consigo fazer isso e devo usar: sh scriptname.sh Nem eu posso usar o arquivo ./ e completar o nome do script.
Todos os bits executáveis estão definidos corretamente, todos os arquivos e pastas possuem as permissões corretas. No cabeçalho dos scripts, o shebang está definido corretamente.
Alguma idéia de por que isso estaria ocorrendo?
Felicidades
A única coisa que causaria isso é se o script não é executável. Eu sei que você disse que o bit executável está definido, mas certifique-se:
chmod +x scriptname.sh
Já li sobre vários problemas decorrentes do preenchimento automático, não necessariamente com 12.04, e as duas opções a seguir parecem valer a pena tentar:
Primeiro, tente desativar a conclusão programável do bash : Comente essas três linhas em /etc/bash.bashrc
e no usuário $HOME/.bashrc
:
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
Você pode descobrir que essas linhas já foram comentadas com #
na frente, e nesse caso apenas deixe como está.
Então, em segundo lugar, tente reinstalar o bash-completion :
sudo apt-get purge bash-completion
sudo mv /etc/bash_completion.d /etc/bash_completion.d.bak
sudo apt-get install bash-completion
Os erros que você vê podem ser causados pela tentativa de executar um executável em uma mídia montada com a propriedade "noexe". Digite mount e examine as propriedades do dispositivo que contém o script. Altere as propriedades / etc / fstab da montagem, se necessário.