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 sh
e ignora lo shebang.