Hallo,
habe eine kurze Frage zu einem Shell-Skript, die denke ich recht einfach beantwortet werden kann. Die Suche hat mir nicht geholfen.
Ich habe ein Shell-Skript erstellt:
| #!/bin/sh
source /opt/ros/electric/setup.bash
export ROS_ROOT=/opt/ros/electric/ros
export PATH=$ROS_ROOT/bin:$PATH
export PYTHONPATH=$ROS_ROOT/core/roslib/src:$PYTHONPATH
export ROS_PACKAGE_PATH=~/ros_workspace:/opt/ros/electric/stacks:$ROS_PACKAGE_PATH
|
Dann habe ich "chmod +x setup.sh" eingegeben und das Skript mit ". setup.sh" gestartet. Leider bekomme ich sofort die Meldung: "#!/bin/sh Datei oder Verzeichnis nicht gefunden"
Was ist da falsch? Alle Fehler die ich in diesem Zusammenhang gefunden habe hatten mit der Ausführbarkeit der Datei zu tun. Die Rechte habe ich aber ja gesetzt..
Falls Du im Verzeichnis des Skriptes bist, ist der korrekte Syntax:
Vermutlich meinst Du sogar die bash, daher in der ersten Zeile:
Das Skript ist aus einem Tutorial (http://www.ros.org/wiki/ROS/Tutorials/InstallingandConfiguringROSEnvironment) und ist denke ich korrekt.
./setup.sh bringt mir das gleiche Ergebnis.
sudo ./setup.sh gibt mir was anderes, aber auch ohne Erfolg:
./setup.sh: 1: #!/bin/sh: not found
./setup.sh: 2: source: not found
Die üblichen Verdächtigen:
Datei zufälligerweise mit Windows-Zeilenenden gespeichert? Es müssen auf jeden Fall UNIX-Zeilenenden sein.
Datei zufälligerweise mit UTF-8-BOM gespeichert? Der darf nicht vorkommen.
Hast du irgendwelche nicht-ASCII Zeichen in der ersten Zeile stehen, zum Beispiel geschützte Leerzeichen (daran glaube ich jetzt nicht so recht)?
Allerdings: In deinem Fall ist „. setup.sh“ als Aufruf schon korrekt, denn du willst die Variablen ja in der aktuellen Shell setzen. Eigentlich brauchst du da gar keine Shebang-Zeile, du kannst also das „#!/bin/sh“ auch rausschmeißen. Mit sudo wirst du gar nicht weiterkommen, weil das – würde es funktionieren – die Variablen in einer Subshell setzt, was dir nichts bringt.
Ich habe deinen Fehler gar nicht mit dem exakt selben Wortlaut nachstellen können. Aber wenn du obiges sicherstellst, dann können wir das jedenfalls schonmal als Fehlerquelle ausschließen.
Ok danke ich schaus mir morgen mal an (bin grad nicht daheim). Ich habe die Datei mit libreoffice editiert, von daher kann das mit dem Zeichensatz schon sein..
mikemodanoxxx schrieb:
Ich habe die Datei mit libreoffice editiert, von daher kann das mit dem Zeichensatz schon sein..
Äh, ja, unter anderem. Nimm für solche Vorhaben lieber einen der Allgemeinen Editoren. 