sourcing bash script não adquire função def

0

Isso é estranho - deve funcionar.

Eu tenho este arquivo /home/foo/waldo.sh

#!/usr/bin/env bash

waldo(){

   if [[ -z $(command -v waldo) ]]; then
       npm install -g '@oresoftware/waldo' || {
         return 1;
      }
   fi

   command waldo "$@"
}


export -f waldo;

se eu for o arquivo com:

. "/home/foo/waldo.sh";

e, em seguida, execute

waldo

Eu recebo:

No command 'waldo' found, did you mean:
 Command 'aldo' from package 'aldo' (universe)
waldo: command not found

quando eu corro $(which waldo) , está vazio, nada lá.

no entanto, quando executo type waldo , recebo:

waldo is a function
waldo () 
{ 
    if [[ -z $(command -v waldo) ]]; then
        npm install -g '@oresoftware/waldo' || { 
            return 1
        };
    fi;
    command waldo "$@"
}

alguém sabe por que não está sendo originado ou o que seja?

    
por Alexander Mills 24.06.2018 / 00:03

1 resposta

3

A função é encontrada e executada, mas contém

command waldo

É para isso que a mensagem de erro se refere.

Você pode lidar com esse problema na função:

if hash waldo >/dev/null 2>&1; then
    command waldo "$@"
else
    echo 'ERROR: ...'
fi
    
por 24.06.2018 / 00:07