/ / using ksh shebang w skrypcie basha - bash

używanie ksh shebang w skrypcie bash - bash

Przeprowadzimy migrację z systemu Unix do systemu Linux. zestaw -L działa tylko z ksh

Stworzyłem następujący plik:

#!/bin/ksh -u

echo $SHELL
typeset -L21 RUN_LOGL="LOG_FILE    "

Zwykle shebang powinien wskazywać poprawnego interpretera (ksh). Ale kiedy zadzwonię do skryptu w bashowy sposób:

$ . test.ksh

Wynik to:

/bin/bash

-bash: typeset: -L: invalid option

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

skrypt jest interpretowany w trybie bash, a zestaw -L nie jest akceptowany. mając na uwadze, że jeśli po prostu zadzwonię

$test.ksh

działa dobrze.

Czy sposób, w jaki nazywamy scenariusz (bash way lub ksh way) jest na tyle ważny, aby zignorować shebang?

Z góry dziękuję.

Odpowiedzi:

8 dla odpowiedzi № 1
. test.ksh

Robi nie wykonać skrypt. To jest pozyskiwanie scenariusz.

Pozyskiwanie skryptu zawsze ignoruje shebang. Shebang jest używany tylko wtedy, gdy skrypt jest wykonany lubić:

chmod +x test.ksh
./test.ksh

0 dla odpowiedzi nr 2

Shebang jest używany tylko wtedy, gdy interpreter nie był wcześniej zdefiniowany, np .:

sh myScript.sh

zawsze będzie cię powoływać shi ignoruje shebang.