ubuntuusers.de

Bash: Command not found

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Phielo

Anmeldungsdatum:
13. April 2007

Beiträge: Zähle...

Hallo Leute,

ich möchte ping auf der Shell aus einem Skript heraus ausführen. Gebe ich ping manuell in der Shell ein, egal in welchem Verzeichnis, führt der Befehl genau das aus, was ich will. Starte ich das Skript heißt es "Command not found". Anscheinend hat das was mit der Variable PATH zu tun. Da ich aber ziemlich Neuling in Sachen Linux bin, weis ich leider nicht genau, wo ich da was eintragen muss, damit BASH den ping command ausführt.

Danke für Eure Hilfe!

snafu1

Avatar von snafu1

Anmeldungsdatum:
5. September 2007

Beiträge: 2133

Wohnort: Gelsenkirchen

Zeig mal den Code.

wildwaldbiberhirte

Avatar von wildwaldbiberhirte

Anmeldungsdatum:
29. Dezember 2006

Beiträge: 309

Wohnort: München

Probier mal, den gesamten Pfad anzugeben.

Also

/bin/ping

Maduser

Avatar von Maduser

Anmeldungsdatum:
3. Mai 2005

Beiträge: 1238

Wenn du im Verzeichnis bist wo das Programm liegt startest du es mit

./script

Also Punkt steht für das aktuelle Verzeichnis. Normalerweise wird nur in Verzeichnissen gesucht die in der PATH-Variable sind (

echo $PATH

).

Phielo

(Themenstarter)

Anmeldungsdatum:
13. April 2007

Beiträge: 28

Hier der Code

if ping -c 1 <ip-adresse> >/dev/null 2>&1; then echo vorhanden; fi

mit Angabe des Pfades von ping /bin/ping funzt es auch nicht.

Habe mein Skript mal in das Verzeichnis von Ping kopiert (/bin) und ausgeführt. Bringt aber auch keine Lösung.

Habe im Verzeichnis von ping das Skript pingtest2.sh mit ./pingtest2.sh ausgeführt. Dann muss ich aber ein Passwort eingeben. Das kann es aber ja wohl nicht sein, wenn ich den Befehl in der Batchdatei ohne Passwort aufrufen kann.

linopolus

Avatar von linopolus

Anmeldungsdatum:
21. Juli 2008

Beiträge: 986

Wohnort: Ottendorf-Okrilla

Es gibt 2 Möglichkeiten:

  1. Du gibst /bin/ping ein, wie schon gesagt oder

2. Du schaust, was bei dir in $PATH drin steht, und machst in deinem Script die Variable $PATH so wie sie auch außerhalb ist.

Phielo

(Themenstarter)

Anmeldungsdatum:
13. April 2007

Beiträge: 28

Du gibst /bin/ping ein, wie schon gesagt oder

Auch dabei heißt "command not found"

Du schaust, was bei dir in $PATH drin steht, und machst in deinem Script die Variable $PATH so wie sie auch außerhalb ist.

Bei mir sind folgende Paths registriert:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Habe meine .sh um folgende Zeile im Kopf erweitert PATH=$PATH:/bin/:/home/server/

Läuft aber immer noch nicht.

Maduser

Avatar von Maduser

Anmeldungsdatum:
3. Mai 2005

Beiträge: 1238

Also ich habe jetzt testweise

if ping -c 1 192.168.1.1 >/dev/null 2>&1; then echo vorhanden; fi

in eine test.sh geschrieben. Habe es ausfürhbar mit

chmod +x test.sh

gemacht und ein

$ ./test.sh 
vorhanden

geht.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4673

Wohnort: Berlin

@Phielo: Könntest Du nochmal das Skrip zeigen und die genaue Fehlermeldung per kopieren und einfügen!?

Phielo

(Themenstarter)

Anmeldungsdatum:
13. April 2007

Beiträge: 28

Hier noch mal das Skript

if /bin/ping -c 1 192.168.1.1 >/dev/null 2>&1; then echo vorhanden; fi

nach dem Aufruf erscheint

bash: pingtest2.sh: command not found

Habe jetzt aber herausgefunden, dass es mit dem Aufruf

bash pingtest2.sh

funktioniert.

Habe es auch mal mit chmod +x pingtest2.sh ausführbar gemacht. Geht aber nicht. Na ja. Geht jetzt zwar, aber ich würde wirklich gerne wissen, warum es bei mir nur mit dem Zusatz bash geht. Vielleicht fällt Euch ja noch was ein.

linopolus

Avatar von linopolus

Anmeldungsdatum:
21. Juli 2008

Beiträge: 986

Wohnort: Ottendorf-Okrilla

Hast du am Anfang #!/bin/sh oder #!/bin/bash? Bei manchen Skripten musst du bash nehmen weil dash ein Problem hat(mehr im Wiki).

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4673

Wohnort: Berlin

@Phielo: Wenn Du nur den Namen eingibst, wird nicht im aktuellen Verzeichnis danach gesucht, sondern nur in denen, die in der Umgebungsvariable PATH stehen. Du kannst auch ./pingtest2.sh eingeben, also mit expliziter Pfadangabe.

Und Du hättest gleich am Anfang deutlicher machen können, dass das Skript selber nicht gefunden wurde, und nicht ping innerhalb des Skripts.

Phielo

(Themenstarter)

Anmeldungsdatum:
13. April 2007

Beiträge: 28

linopolus schrieb:

Hast du am Anfang #!/bin/sh oder #!/bin/bash? Bei manchen Skripten musst du bash nehmen weil dash ein Problem hat(mehr im Wiki).

Ja hatte ich eingefügt. Funktioniert aber nicht.

@Phielo: Wenn Du nur den Namen eingibst, wird nicht im aktuellen Verzeichnis danach gesucht, sondern nur in denen, die in der Umgebungsvariable PATH stehen. Du kannst auch ./pingtest2.sh eingeben, also mit expliziter Pfadangabe.

Und Du hättest gleich am Anfang deutlicher machen können, dass das Skript selber nicht gefunden wurde, und nicht ping innerhalb des Skripts.

Wegen der Path-Variablen habe ich das Skript testweise auch mal in einen der Pfade kopiert. Ging aber nicht. Das er das Skript nicht findet und nicht das Kommando habe ich auch erst die Tage herausgefunden.

Wie gesagt. Da es ja mit dem Aufruf bash pingtest2.sh geht, bin ich eigentlich schon ganz zufrieden und habe wieder etwas dazu gelernt.

DrScott Team-Icon

Ehemalige
Avatar von DrScott

Anmeldungsdatum:
7. Juli 2005

Beiträge: 6018

Wohnort: Nürnberg

Ich vermute mal, dass die Partition, auf der pingtest2.sh gespeichert ist, mit dem noexec-Attribut gemountet ist. Zeich doch mal deine /etc/fstab und schreib' dazu, auf welcher Partition das Skript liegt...

raleeha

Avatar von raleeha

Anmeldungsdatum:
27. April 2010

Beiträge: 75

Hallo liebe Leute ☺

folgendes Problem: möchte gerne lernen wie man skripte schreibt, aber bekomme es leider nicht hin das mein skript gestartet wird

mit :

bash skripttest.sh

läuft es wie ich aus dem obigen beitrag entnommen habe...

der gedanke das es evt. an meiner fstab liegen könnte hat sich bei mir aufgetan deswegen folgender codeblock...

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# /dev/sda3
UUID=b4c8b873-7690-4c4c-a61c-36beb2eee892 /               ext3    relatime,errors=remount-ro 0       1
# /dev/sda1
UUID=fa26ced6-acf7-4f0e-b566-d139b481b21f /boot           ext3    relatime        0       2
# /dev/sda5
UUID=808b0d95-53cc-46aa-aed2-a7245341c0eb none            swap    sw              0       0                   
# /dev/sdb1
UUID=c41c42d6-4fc4-4526-a5ea-d843a8ab5314 /media/Backup   ext3    relatime,errors=remount-ro 0       1
#/dev/sdc				       	
UUID="A8A0-A4D5"                          /               fat32
# /dev/sdd                                  
UUID=2ef7e1ee-06dd-4967-845b-9e3111dfea76 /             reiserfs 
/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec,utf8
/dev/scd1       /media/cdrom1   udf,iso9660 user,noauto,exec,utf8

das skript welches ich geschrieben hab lautet wie folgt:

#Mein erstes Skript

echo "ach ja"

ls

echo "soso"

wäre sehr nett, wenn mir jemand einen tip geben könnte woran es liegen könnte...achso das skript hab ich mit chmod 755 skripttest ausführbar gemacht

lg knut

Moderiert von DrScott:

Codeblock ergänzt

Antworten |