Prevedieme migráciu z UNIX na Linux. typety -L pracuje iba s ksh
Vytvoril som nasledujúci súbor:
#!/bin/ksh -u
echo $SHELL
typeset -L21 RUN_LOGL="LOG_FILE "
Za normálnych okolností by shebang mal naznačovať správny tlmočník (ksh). Ale keď volám skript v bash spôsobom:
$ . test.ksh
Výstup je:
/bin/bash
-bash: typeset: -L: invalid option
typeset: usage: typeset [-aAfFilrtux] [-p] name[=value] ...
skript je tlmočník v bash spôsobom a typety -L nie je akceptované. zatiaľ čo som jednoducho zavolať
$test.ksh
to je v poriadku.
Je spôsob, akým nazývame skript (bash way alebo ksh cestu), ktorý je dostatočne dôležitý na to, aby ignoroval shebangu?
Vopred ďakujem.
odpovede:
8 pre odpoveď č. 1. test.ksh
má nie spustiť skript. to je sourcing scenár.
Získanie skriptu vždy ignoruje šebang. Shebang sa používa iba vtedy, keď je skript vykonaný Páči sa mi to:
chmod +x test.ksh
./test.ksh
0 pre odpoveď č. 2
Shebang sa používa iba vtedy, ak tlmočník nebol definovaný skôr, napr .:
sh myScript.sh
bude vždy vyvolať vaše sh
, a ignoruje šebang.