/ / usando ksh shebang in uno script di bash - bash

usando ksh shebang in uno script bash - bash

Eseguiremo una migrazione da unix a Linux. il typeset -L funziona solo con ksh

Ho creato il seguente file:

#!/bin/ksh -u

echo $SHELL
typeset -L21 RUN_LOGL="LOG_FILE    "

Normalmente lo shebang dovrebbe indicare l'interprete corretto (ksh). Ma quando chiamo lo script in un modo bash:

$ . test.ksh

L'output è:

/bin/bash

-bash: typeset: -L: invalid option

typeset: usage: typeset [-aAfFilrtux] [-p] name[=value] ...

lo script è interprete in modo bash, e typeset -L non è accettato. mentre se semplicemente chiamassi

$test.ksh

funziona bene

È il modo in cui chiamiamo il copione (modo bash o modo ksh) abbastanza importante da ignorare lo shebang?

Grazie in anticipo.

risposte:

8 per risposta № 1
. test.ksh

fa non eseguire lo script. È Reperimento il copione.

Approvvigionamento di una sceneggiatura sempre ignora lo shebang. Lo shebang è usato solo quando lo script è eseguito piace:

chmod +x test.ksh
./test.ksh

0 per risposta № 2

Lo shebang viene utilizzato solo se l'interprete non è stato definito in precedenza, ad esempio:

sh myScript.sh

invocherà sempre il tuo she ignora lo shebang.