Linux 15.070 Themen, 107.540 Beiträge

Shell-Skript ?

alexge / 4 Antworten / Baumansicht Nickles

..irgendetwas mache ich falsch..
habe nachdem ich verschiedenes gelesen habe und auch ´mic´
mir tips gab versucht einen ganz einfachen shell-skript zu schreiben
aber es klappt nicht.
habe folgendes gemacht
(als normaluser nicht als root):

1) datei mit namen "best" erstellt

2) chmod 755 best

3) skript geschrieben :
#!/bin/bash

mkdir backup

echo "done"

4) wenn ich nun in die shell den befehl "best"
eingebe kommt :bash: best: command not found


Woran liegts? was ist der fehler?

habe [suse linux 9.1]

bei Antwort benachrichtigen
rmf alexge „Shell-Skript ?“
Optionen

Wo ist Dein Shell-Script denn abgelegt? Wenn es sich in Deinem Heimatverzeichnis befindet, wechsle doch mal in dasselbe und versuche es mit "./best" ; ohne Tüddelchen natürlich.

bei Antwort benachrichtigen
the_mic alexge „Shell-Skript ?“
Optionen

die shell sucht bei eingabe des dateinamens standardmässig aus sicherheitsgründen nur in den in der variablen $PATH eingetragenen verzeichnissen. der inhalt der $PATH-variablen kann mit echo $PATH angezeigt werden.
wenn du das skript nicht in einem dieser verzeichnisse ablegst, so muss es, wie von rmf erwähnt, mit dem relativen oder absoluten pfad aufgerufen werden. der absolute pfad beginnt immer mit / und ist eine angabe, ab wo vom wurzelverzeichnis sich eine datei befindet. der relative pfad gibt an, wo sich eine datei relativ zum aktuellen verzeichnis (anzeigbar mit dem befehl pwd) befindet. befindet sich eine datei in einem übergeordneten verzeichnis, so kann man mit .. dorthin navigieren. liegt eine datei im aktuellen verzeichnis, so muss dies mit . (was für "aktuelles verzeichnis" steht) angegeben werden.

beispiele:
wir haben eine datei namens meinskript in /home/user/skripte/ abgelegt und ausführbar gemacht.
ansprechen über absoluten pfad (aktuelle position egal): /home/user/skripte/meinskript
relativer pfad, wenn wir in /home/user sind: skripte/meinskript
relativer pfad, wenn wir in /home/user/blabla sind: ../skripte/meinskript
relativer pfad, wenn wir in /home/user/skripte sind: ./meinskript

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
alexge Nachtrag zu: „Shell-Skript ?“
Optionen

...nachdem ich ./best eingegeben habe, hats geklappt..

tja erfreulich langsam einen kleinen einstieg in´s skript-schreiben
zu bekommen
..an meinem skript ansich war ja formal alles korrekt, oder ?

bei Antwort benachrichtigen
rmf alexge „..es lag an der pfadangabe..“
Optionen

Da war nix falsches dran. Puristen würden eventuell bemängeln, dass das Skript nicht sonderlich portabel ist. Nicht auf allen Unixoiden ist eine Bash installiert.

# $OpenBSD: shells,v 1.5 1997/05/28 21:42:20 deraadt Exp $
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/sh
/bin/csh
/bin/ksh
/usr/local/bin/bash

Hier wurde die Bash nachträglich installiert. Ursprünglich wäre Dein Script aber ohne Modifikationen nicht auf diesem System lauffähig gewesen. Die Zwergen-Linuxe (Ein-Disketten-Systeme etc.) sowie Linux-PDA's haben aus Platzgründen (die Bash ist fett und passt nicht auf eine Diskette) oder zur Ressourcenschonung (die Bash ist fett und frisst relativ viel RAM) meist keine Bash installiert - die nehmen gern die Busybox.

Ich mag die Bash aber, weil sie extrem bequem ist.

bei Antwort benachrichtigen