Como posso obter um script bash contendo BASH_SOURCE do shell zsh?

4

Eu tenho um script bash que se parece com isso:

...
SOME_VARIABLE=$(readlink -f $(dirname ${BASH_SOURCE[0]}))
export SOME_VARIABLE
...

Eu preciso de fonte de um shell zsh como eu preciso ter todas as variáveis de ambiente que define.

O problema é que recebo esta mensagem de erro por causa de BASH_SOURCE:

dirname: missing operand
Try 'dirname --help' for more information.
readlink: missing operand
Try 'readlink --help' for more information.
Invalid location:

Restrições : não consigo modificar o script.

Pergunta : Posso criar um script bash contendo BASH_SOURCE do zsh?

    
por rual93 01.11.2018 / 11:25

1 resposta

3

Em vez de fazer . /path/to/that/script.bash , faça:

BASH_SOURCE=/path/to/that/script.bash emulate ksh -c '. $BASH_SOURCE'

emulate ksh -c '...' executa o código em ksh emulação (para que, por exemplo, os índices da matriz iniciem em 0 como no bash) e também garante que todas as funções definidas em herdam esse modo de emulação.

$BASH_SOURCE em bash refere-se ao arquivo que está sendo originado, portanto, fizemos uma pré-configuração dessa variável com o caminho do script.

O zsh equivalente desse código bash seria:

export SOME_VARIABLE=$0:h:P

( :h dando a cabeça como em csh (o equivalente a dirname ) e :P o equivalente a GNU readlink -f ).

    
por 01.11.2018 / 16:05

Tags