"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

#!/bin/sh oder #!/bin/bash

davebastard 11.10.2012 - 16:02 1639 2
Posts

davebastard

Vinyl-Sammler
Avatar
Registered: Jun 2002
Location: wean
Posts: 11601
folgendes problem:

hab hier einen haufen alte bash-scripts die mit #!/bin/sh am anfang geschrieben wurden.
wenn ich sie auf neueren debian-systemen laufen lasse dann funktionieren sie nur wenn ich sie auf /bin/bash nach dem shebang umändere (#!/bin/bash)

/bin/sh ist übrigens ein symlink auf bash(/bin/sh -> bash).

trotzdem wird das anscheinend erkannt und dann von der bash ein spezieller sh-kompatibilitätsmodus gestartet, weswegen die ganzen skripts nicht mehr gehen.

Es dürfte sich da irgendwas geändert haben, vor noch nicht allzu langer zeit gings noch. (mir kommt vor bis zum welchsel auf dash als debian standard shell)

wie kann ich das konfigurieren dass die alten skripts trotzdem laufen ?
alle skripts umändern wäre relativ mühsam. (auch automatisiert)

edit: soweit ich das verstanden hab muss der POSIX-mode auch bei #!/bin/sh verwendet werden. nur wie erreich ich das ?
Bearbeitet von davebastard am 11.10.2012, 16:15

COLOSSUS

Administrator
Frickler
Avatar
Registered: Dec 2000
Location: ~
Posts: 11928
Vergiss alle Hacks, schreib auf den richtigen Interpreter um. bash ist nun mal nicht sh.

Ungetestet, als Anregung:
Code:
 find /path/to/dor/with/custom/shellscripts \( -iname "*.sh" -o -iname "*.bash" \) -exec sed -r -i.bak '1s@/bin/sh([[:blank:]]*)@/bin/bash\1@' {} +

davebastard

Vinyl-Sammler
Avatar
Registered: Jun 2002
Location: wean
Posts: 11601
ok ich habs schon befürchtet,man findet auch nix gscheites dazu.
weißt du warum das erst seit kurzem ist ? wie wars vorher ?
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz