Eu não entendo o que você está tentando fazer aqui, mas o problema é que você está tentando executar myecho
como um programa. Vamos dar uma olhada na linha relevante:
$2 < $3 > $1
Aqui, $2
é myecho
, $3
é echo.in
e $1
é file.log
. Portanto, o que você está executando é:
myecho < echo.in > file.log
Com base na saída do seu script, você tem um arquivo chamado myecho
no diretório atual (caso contrário, o script teria reclamado sobre o arquivo 2 não existente). No entanto, seu diretório atual aparentemente não está em sua $PATH
. Portanto, quando você tenta executar myecho
, o sistema procura por um executável com esse nome nos diretórios em seu $PATH
, não encontra um e reclama.
A solução mais simples é chamar ./$2
em vez de $2
, o que diz ao seu shell para executar o arquivo chamado myecho
no diretório atual e não procurá-lo naqueles em $PATH
.
Como alternativa, você pode adicionar seu diretório atual ao seu $PATH
. Adicione esta linha ao seu ~/.profile
:
PATH="$PATH:"
O trailing :
adiciona seu diretório atual (o que quer que seja) ao seu $PATH
. Você terá que efetuar logout e login novamente ou manualmente originar .profile
( . ~/.profile
) para que as alterações entrem em vigor. Observe que isso pode ser perigoso em alguns casos em que, por exemplo, um invasor carregou um executável malicioso em seu diretório atual e o nomeou ls
.