Você deve
-
verifique o script em busca de qualquer "caractere oculto" antes da parte "/ home" (isso explicaria que ele não pode ser copiado para ele, e por que a exibição trunca parte dela também). Por exemplo: cat -ve THEFILE #
-e
marcará cada extremidade da linha com um$
e-v
mostrará alguns dos caracteres de controle no formato^x
, ex:^M
para o caractere de controle "Retorno de carro". -
Corrigir: Para isso, digite um exemplo de trabalho em seu shell, copie-o usando o mouse, edite o script, exclua a linha e cole o que você copiou em seu lugar. (no vi: se o script é exatamente como descrito (e a linha defeituosa é a linha 4): você vai para a linha 4 com
4G
e, em seguida, exclui essa linha comdd
, e entre no modo Insert na linha acima com:O
(capital o). Então você pode colar as linhas que copiou com o mouse, entãoEscape
para voltar ao modo de comando, e:wq
para gravar as alterações no arquivo e sair do vi. -
Você pode comparar a saída $ (pwd) com o valor $ PWD: tente substituir:
echo $PWD
por:pwd ; echo "PWD=$PWD"
-
finalmente:
bash . script.sh
deve ser:bash ./script.sh
. O que você digitou pede bash para executar "." com o argumento "script.sh" e "." sendo um diretório, o bash reclama. Quando invocada dessa maneira, a reclamação geralmente está no formato:program_name: some message
. Aqui o bash tenta executar o programa.
, então sua mensagem de erro usa erroneamente.:
como o prompt do nome do programa, e a mensagem que ele exibe é.: is a directory
, indicando que não pôde executá-lo e por quê (é um diretório, não um script bash). -
Observe que, quando você invode script.sh dessa maneira (bash ./script.sh), você solicita ao seu shell atual para invocar um subwell
bash
que executaráscript.sh
e sairá. Apenas esse subshell bash será: ecoando o PWD, em seguida, cd-indo para o diretório, o eco do novo PWD. Quando esse bash sai, seu shell atual ainda está no diretório original. Se você quiser que um arquivo faça alterações no seu shell atual, coloque-o em seu lugar:. ./script.sh
ou no bash você também podesource ./script.sh
(nota:.
é a maneira mais portátil de criar um arquivo) (nota 2: ter um caminho para o arquivo é recomendado no shell recente, ou seja:. script.sh
pode funcionar também, mas é recomendado especificar o caminho local como:. ./script.sh
)