Experimente "./a.sh" ao tentar executá-lo. Ele precisa saber onde o arquivo está.
O './' diz para procurar no diretório atual.
Não tenho certeza do que está acontecendo.
Deixa o script de chamada a.sh
com o seguinte
/users/guru$ cat a.sh
#! /usr/bin/ksh
echo "Hello"
date
Execute com ksh
. Isso é feito.
/users/guru$ ksh a.sh
Hello
Tue Jul 15 15:00:52 EDT 2014
Garanta a permissão de arquivo e ksh
caminho.
/users/guru$ ls -l a.sh
-rwxrwxrwx 1 guru kpc 35 Jul 15 15:00 a.sh
/users/guru$ a.sh
ksh: a.sh: not found
/users/guru$ which ksh
/usr/bin/ksh
Experimente "./a.sh" ao tentar executá-lo. Ele precisa saber onde o arquivo está.
O './' diz para procurar no diretório atual.
Quando você digita um comando, o shell procura o comando em uma lista de diretórios, conforme especificado pela variável PATH
.
O diretório atual não está em PATH
por padrão (por motivo de segurança), então o shell não pode encontrar seu script.
Usando ./
, ou seja, o diretório atual, para que o shell saiba onde está seu script.
Como eu postei na outra pergunta, às vezes é possível obter o erro de arquivo não encontrado mesmo quando você executa o script como ./scriptname
. Como já publiquei na outra resposta , você pode testá-lo em sua máquina.
Teste
cat ksh_experiment.ksh
#!/usr/bin/ksh
echo "Hello"
Agora, depois de fornecer as permissões quando executei o arquivo, ele gerou a saída com êxito. Agora, conforme discutido acima aqui , inseri alguns retornos de carro no meu arquivo. Agora, quando eu executei o script, recebi a saída como
ksh: ./ksh_experiment.ksh: not found [No such file or directory]
Agora, cat -v ksh_experiment.ksh
também produziu a mesma saída. Além disso, se eu digitasse vim ksh_experiment.ksh
, um novo arquivo estava sendo aberto.
Como discutido na resposta do link que eu forneci, removi os retornos de carro usando o comando
perl -p -i -e "s/\r//g" ksh_experiment.ksh
Depois de consertar quando corri, recebi a saída como esperado.
Agora, você também pode usar dos2unix
para converter o arquivo.
Tags executable ksh shell