Skripte von Squeeze nach Wheezy

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Ozelot
Beiträge: 1507
Registriert: 18.11.2007 09:52:58

Skripte von Squeeze nach Wheezy

Beitrag von Ozelot » 13.03.2014 12:02:33

Ist vermutlich ne dumme Frage:

Ich lasse gerade ein paar Skrpite, die ich unter Squeeze geschrieben hatte, unter Wheezy laufen - bekomme aber plötzlich einige Fehler: Einerseits scheint let nicht zu existieren:

Code: Alles auswählen

let: not found 1000
andererseits bekomme ich ein "unknown operator" für

Code: Alles auswählen

if [ "$z" == "$w" ]; then
während es mit "-eq" funktioniert.

Kann das daran liegen, daß die Skripte vielleicht über die Dash laufen (in Squeeze hatte ich damals einen symlink umgebogen, damit statt der dash die bash läuft)? D.h. passiert das auch, obwohl in der ersten Zeile des Skripts "#!/bin/bash" steht?

Benutzeravatar
4A4B
Beiträge: 925
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Skripte von Squeeze nach Wheezy

Beitrag von 4A4B » 13.03.2014 12:26:34

Die Shebang-Zeile "#!/bin/bash" wird berücksichtigt, wenn du das Script direkt aufrufst, also z.B.:

Code: Alles auswählen

./script.sh
In so einem Fall hingegen wird die Standard-Shell verwendet:

Code: Alles auswählen

sh script.sh

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: Skripte von Squeeze nach Wheezy

Beitrag von uname » 13.03.2014 12:30:01

Nur die Bash und nicht die Dash kennt "let", gleiches gilt wahrscheinlich für die "=="-Geschichte. Unter Wheezy wird standardmäßig die Dash als /bin/sh genutzt.
Ändere entweder den Shebang auf /bin/bash, die Shell der Benutzer von /bin/dash bzw. /bin/sh zu /bin/bash oder konfiguriere es irgendwie global um. Ist mir entfallen ob und wie das geht, wahrscheinlich mit "update-alternatives". Es gibt Anleitungen im Internet. Da es bei mir irgendwie nicht geht poste ich mal keinen Link. Musst mal suchen.

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Skripte von Squeeze nach Wheezy

Beitrag von rendegast » 13.03.2014 13:27:23

Oder ändere die Skripte posix-konform.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

dirk11
Beiträge: 2813
Registriert: 02.07.2013 11:47:01

Re: Skripte von Squeeze nach Wheezy

Beitrag von dirk11 » 13.03.2014 15:30:21

rendegast hat geschrieben:Oder ändere die Skripte posix-konform.
Kannst du mal erläutern, was man da machen muss? Ein paar wenige Scripte habe ich auch. Die laufen zwar alle, aber wenn man vorsorgen kann, dann sollte man das auch nutzen.

Ozelot
Beiträge: 1507
Registriert: 18.11.2007 09:52:58

Re: Skripte von Squeeze nach Wheezy

Beitrag von Ozelot » 13.03.2014 15:46:46

Danka, ja - da würde ich mich anschließen: Die POSIX-Spezifikationen sind offensichtlich extrem umfangreich - ich finde gerade nicht den richtigen Link, der mir die Standards für einfaches Scripting zusammenfaßt..

Ansonsten: Das Verzeichnis meiner Scripte steht in $PATH . Das heißt also, wenn ich die direkt mit ihrem Namen aufrufe entspricht das "sh Script" und nicht "./Script" und somit wird die Shebang-Zeile ignoriert. Könnte man dieses Verhalten ändern? Die Standardshell umbiegen ginge natürlich (symlink von dash auf /bin/bash), aber langfristig klüger ist sicher die POSIX-konformität.

newdeb
Beiträge: 134
Registriert: 03.02.2011 11:11:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Frankfurt

Re: Skripte von Squeeze nach Wheezy

Beitrag von newdeb » 13.03.2014 16:30:14

Ozelot hat geschrieben:Das heißt also, wenn ich die direkt mit ihrem Namen aufrufe entspricht das "sh Script" und nicht "./Script" und somit wird die Shebang-Zeile ignoriert.
Nein, es entspricht dem Aufruf des Skriptes mit absolutem Pfad (den die Shell durch eine PATH-Suche ermittelt), und die Shebang-Zeile wird ausgewertet.
Ozelot hat geschrieben:Die POSIX-Spezifikationen sind offensichtlich extrem umfangreich - ich finde gerade nicht den richtigen Link, der mir die Standards für einfaches Scripting zusammenfaßt..
http://pubs.opengroup.org/onlinepubs/00 ... hap02.html

Ozelot
Beiträge: 1507
Registriert: 18.11.2007 09:52:58

Re: Skripte von Squeeze nach Wheezy

Beitrag von Ozelot » 13.03.2014 21:27:10

newdeb hat geschrieben: Ozelot hat geschrieben:Das heißt also, wenn ich die direkt mit ihrem Namen aufrufe entspricht das "sh Script" und nicht "./Script" und somit wird die Shebang-Zeile ignoriert.


Nein, es entspricht dem Aufruf des Skriptes mit absolutem Pfad (den die Shell durch eine PATH-Suche ermittelt), und die Shebang-Zeile wird ausgewertet.
Aber warum bekomme ich dann diese Fehler? Alle Scripte beginnen mit #! /bin/bash.

Danke für den Link!

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Skripte von Squeeze nach Wheezy

Beitrag von Cae » 13.03.2014 21:34:26

Ist das denn auch 'ne Bash, die da ausgefuehrt wird? Du kannst ja mal ein help in ein Testskript reinpacken. Das ist ein Bash-Builtin, welches u.a. auch die Versioninformationen ausspuckt.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Ozelot
Beiträge: 1507
Registriert: 18.11.2007 09:52:58

Re: Skripte von Squeeze nach Wheezy

Beitrag von Ozelot » 13.03.2014 23:27:24

Hm.
Wie vermutet:

Code: Alles auswählen

help: not found

newdeb
Beiträge: 134
Registriert: 03.02.2011 11:11:21
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Frankfurt

Re: Skripte von Squeeze nach Wheezy

Beitrag von newdeb » 14.03.2014 08:39:20

Funktioniert dieser Aufruf?

Code: Alles auswählen

/bin/bash DeinBashSkript

Ozelot
Beiträge: 1507
Registriert: 18.11.2007 09:52:58

Re: Skripte von Squeeze nach Wheezy

Beitrag von Ozelot » 14.03.2014 11:51:11

Ja, der funktioniert.
Übrigens auch "help" aus dem Terminal (xterm).
Nur eben nicht direkter Aufruf des Skripts über $PATH.

Antworten