Shellscript funktioniert nicht

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
themonk
Beiträge: 41
Registriert: 18.03.2008 15:25:39

Shellscript funktioniert nicht

Beitrag von themonk » 28.04.2008 14:05:51

Hallo,
bin gestern in einem Debian-Buch in dem Shell Kapital angekommen nur dort steht nicht, wo ich das Script speichern soll.
Das Script soll folgendes machen, wenn ich

Code: Alles auswählen

bs test.sh
eingebe soll diese Datei (test.sh) in das Verzeichnis scripts gespeichert werden wenn es noch nicht vorhanden ist und es soll sich ein Texteditor öffnen.
Wenn ich bs test.sh eingebe passiert nichts nur wenn ich sh bs test.sh eingebe öffnet sich der Editor wieso? Fehlt in dem Buch das sh davor muss oder muss die Datei in ein extra Ordner gespeichert werden?

Thammi
Beiträge: 79
Registriert: 03.07.2005 17:53:46
Wohnort: Dresden
Kontaktdaten:

Re: Shellscript funktioniert nicht

Beitrag von Thammi » 28.04.2008 14:32:12

Hi,
dein Ansatz mit "sh" ist schon richtig, dieses "bs" solltest du allerding weglassen. Du kannst auch "bash" nehmen:

Code: Alles auswählen

bash test.sh
Ich gehe mal davon aus, dass das einfach ein Tippfehler oder so ist.

So far, farewell
Thammi

swuing
Beiträge: 106
Registriert: 17.09.2006 21:18:38

Re: Shellscript funktioniert nicht

Beitrag von swuing » 28.04.2008 14:37:56

also ich vermute mal das "bs" das eigentliche script ist...
warscheinlich hast du am anfang deines scripts die obligatorische shebang vergessen (#!/bin/sh)

google weiss mehr dazu :)

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Shellscript funktioniert nicht

Beitrag von gms » 28.04.2008 14:48:54

so wie ich das verstanden habe, ist das Script um das es hier geht, das "bs" Script und 'test.sh' ist das erste Argument mit dem dieses Script aufgerufen werden soll.
Wenn das 'sh' angegeben werden muß, dann fehlen üblicher Weise die Execute Permissions für dieses Script. In diesem Fall sollte aber auch nicht NICHTS passieren, sondern eine entsprechende Fehlermeldung kommen

Code: Alles auswählen

gms2 ~ # echo '#!/bin/sh' >x
gms2 ~ # ./x
bash: ./x: Keine Berechtigung
gms2 ~ # sh ./x
gms2 ~ # chmod +x ./x
gms2 ~ # ./x
gms2 ~ # 
ein fehlendes Shebang düfte eigentlich auch kein stillschweigendes Nichtstun bewirken

Code: Alles auswählen

gms2 ~ # echo -e '#!/bin/sh\necho hallo' >x
gms2 ~ # ./x
hallo
gms2 ~ # echo -e 'echo hallo' >x
gms2 ~ # ./x
hallo
Gruß
gms

themonk
Beiträge: 41
Registriert: 18.03.2008 15:25:39

Re: Shellscript funktioniert nicht

Beitrag von themonk » 28.04.2008 18:32:18

Das Script sieht so aus:

Code: Alles auswählen

[-z "$1"] && echo "usage: bs <Scriptname>" && exit 1
test -d $HOME/scripts || mkdir $HOME/scripts
editor $HOME/scripts/$1
chmod +x $HOME/sc/$1
Habe es auch mit "#!/bin/sh" Oben versucht nur es kommt immer:-bash: bs: command not found

Benutzeravatar
habakug
Moderator
Beiträge: 4314
Registriert: 23.10.2004 13:08:41
Lizenz eigener Beiträge: MIT Lizenz

Re: Shellscript funktioniert nicht

Beitrag von habakug » 28.04.2008 18:42:06

Hallo!

Vielleicht ist die ButtonShell [1] gemeint.

Have phun!
Gruß, habakug

http://w3.impa.br/~lhf/bs/
( # = root | $ = user | !! = mod ) (Vor der PN) (Debianforum-Wiki) (NoPaste)

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Shellscript funktioniert nicht

Beitrag von Meillo » 28.04.2008 19:30:20

Die Situation ist folgende (und da bin ich mir ziemlich sicher): `bs' ist ein Script um Shellscripte zu erstellen.
Dieses sollte folgendermaßen aussehen:

Code: Alles auswählen

#!/bin/sh
[-z "$1"] && echo "usage: bs <Scriptname>" && exit 1
test -d $HOME/scripts || mkdir $HOME/scripts
$VISUAL $HOME/scripts/$1
chmod +x $HOME/scripts/$1
also die Shebang-Zeile an den Anfang und $VISUAL statt 'editor' (oder direkt `vi', `gedit' o.ä. verwenden). Zudem 'sc' durch 'scripts' ersetzen (in der chmod-Zeile).
Dieses Script muss dann ausführbar gemacht werden: `chmod +x bs'
Und es muss in den Pfad kopiert werden. Z.B. `sudo cp bs /usr/local/bin'

Danach kannst du den gewünschten Aufruf (`bs test.sh') machen und dadurch ein Script anlegen.
Um dieses zu starten, musst du es dann entweder mit `$HOME/scripts/test.sh' aufrufen, oder den Ordner '$HOME/scripts' in den Pfad aufnehmen. Letzteres kannst du mit `echo 'PATH=$PATH:$HOME/scripts' >> ~/.bashrc' tun.
Normalerweise würde man das 'scripts'-Verzeichnis 'bin' nennen (also $HOME/bin) und das wird (auf Debian-Systemen) normalerweise automatisch, falls vorhanden, in den Pfad aufgenommen. (Neuer Login ist dazu erforderlich.)

Noch Fragen?
Use ed once in a while!

themonk
Beiträge: 41
Registriert: 18.03.2008 15:25:39

Re: Shellscript funktioniert nicht

Beitrag von themonk » 28.04.2008 20:08:01

Wenn ich die Datei in das Verzeichnis "/usr/local/bin" kopiere geht alles.
Und sc musste ich druch scripts ersetzten editor konnte stehen bleiben.


Also bedeutet das das ich alle Shellscripte in "/usr/local/bin" speichern muss oder?
Vielen Dank

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Shellscript funktioniert nicht

Beitrag von Meillo » 28.04.2008 20:57:58

themonk hat geschrieben:Also bedeutet das das ich alle Shellscripte in "/usr/local/bin" speichern muss oder?
Nein.
Das `bs'-Script speichert die Shellscripte automatisch nach $HOME/scripts. Dort kannst du sie lassen, du solltest nur eben dieses Verzeichnis in den Pfad aufnehmen. (Wie das geht, habe ich beschrieben.)
Zur Erklärung: Wenn du einen Befehl eintippst, dann wird in allen Ordnern die in $PATH sind, nach einer ausführbaren Datei mir diesem Namen gesucht. Wenn dein Scripte-Ordner ($HOME/scripts) auch in $PATH steht, dann wird auch darin gesucht.
Wenn du dein Scriptverzeichnis im Pfad hast, dann kannst du `bs' auch dorthin verschieben, und es wird immernoch tun.
Use ed once in a while!

Benutzeravatar
LessWire
Beiträge: 558
Registriert: 21.11.2004 04:36:04
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Bavaria

Re: Shellscript funktioniert nicht

Beitrag von LessWire » 29.04.2008 04:52:40

themonk hat geschrieben:Wenn ich die Datei in das Verzeichnis "/usr/local/bin" kopiere geht alles.
Und sc musste ich druch scripts ersetzten editor konnte stehen bleiben.


Also bedeutet das das ich alle Shellscripte in "/usr/local/bin" speichern muss oder?
Vielen Dank
Nicht wirklich :-) Du kannst ein Script aus jedem beliebigen Verzeichnis starten, allerdings musst Du dann auch das Verzeichnis angeben.
Beispiel: Wenn das Script "bs" im Home-Verzeichnis steht und Du in diesem Verzeichnis bist, musst Du "./bs" eingeben. Die Annahme, daß ein Kommando automatisch auch in dem Verzeichnis gesucht wird, in dem man sich gerade befindet, ist zumindest in der Unixwelt falsch.

vg, l.w.
at ~ now.

Benutzeravatar
Meillo
Moderator
Beiträge: 9254
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Shellscript funktioniert nicht

Beitrag von Meillo » 29.04.2008 08:13:55

LessWire hat geschrieben:Die Annahme, daß ein Kommando automatisch auch in dem Verzeichnis gesucht wird, in dem man sich gerade befindet, ist zumindest in der Unixwelt falsch.
Allerdings nur wenn man davon ausgeht, dass '.' nicht in $PATH ist (was bei der Mehrheit der Systeme auch so ist).
Use ed once in a while!

Benutzeravatar
LessWire
Beiträge: 558
Registriert: 21.11.2004 04:36:04
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Bavaria

Re: Shellscript funktioniert nicht

Beitrag von LessWire » 30.04.2008 03:36:21

So ist es. :-)

Grundsätzlich ist aber eine komplette Pfadangabe vor einem Kommando nie verkehrt. Bei Befehlsaufrufen innerhalb von Skripten aus diversen Gründen sogar absolut empfehlenswert.

vg, l.w.
at ~ now.

Antworten