Como substituir a fonte no script de shell do Linux?

Como substituir a fonte no script de shell do Linux?

Minha equipe compartilha um script de shell, quero torná-lo compatível com o Cygwin porque só eu estou no Windows. Agora o problema vem de source. Meu shell só aceita formatos como:

source ./<file name>

em vez de

source <file name>

que já está no script. Então eu quero substituir sourcecomo:

source(){ . ./$@; }

Mas agora meu shell reclama que:

`source': is a special builtin

O que devo fazer agora?

Responder1

A partir daquela mensagem de erro sobre um builtin especial (vejahttp://sources.debian.net/src/bash/4.4-4/execute_cmd.c/?hl=5623#L5623), parece que você está executando o bash no modo POSIX. Isso pode ocorrer porque você configurou $POSIXLY_CORRECT, executou o shell com --posix, usou set -o posix, etc.

Uma das muitas coisas que o modo POSIX faz (além de não permitir que você substitua source) é fazer source(e .) não pesquisar o diretório de trabalho atual se $PATH-lookup falhar.

Isso não tem nada a ver com a execução no Cygwin.

informação relacionada