Probleme mit shebang #!/bin/sh

Status
Für weitere Antworten geschlossen.

chrisrich

Benutzer
Mitglied seit
13. Sep 2012
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Ich habe in einem Skript wie zuvor auch
Code:
#!bin/sh
als Shebang eingefügt.

Nach einem zurücksetzen der DS kommt nun diese Meldung:

Code:
sh createshare.sh
createshare.sh: line 1: #!/bin/sh: not found
ClutchNAS> tail -f /var/log/messages

Das Skript sieht folgendermaßen aus:#!/bin/sh

Code:
# Legt Ordner öffentlichen Ordner /volume1/public/syno-share an

mkdir -p /volume1/public/

Hat jemand eine Idee woran das liegen könnte=?
Im Verzeichnis /bin sind sowohl der Eintrag sh als auch ash zu finden.

Viele Grüße und schon mal danke,
chrisrich
 

Puppetmaster

Benutzer
Sehr erfahren
Mitglied seit
03. Feb 2012
Beiträge
18.981
Punkte für Reaktionen
619
Punkte
484

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.250
Punkte für Reaktionen
2.845
Punkte
423
... oder Datei im Windows-Format (CR/LF am Zeilenende anstatt nur LF)?
 

chrisrich

Benutzer
Mitglied seit
13. Sep 2012
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Ich habe noch mal nachgeschaut:

Das / vor dem bin ist da.
Code:
#!/bin/sh

# Legt Ordner öffentlichen Ordner /volume1/public/syno-share an

mkdir -p /volume1/public/
synoshare --add syno-share syno-share /volume1/public/syno-share "" root "" 1 0

Waw meinst Du mit
... oder Datei im Windows-Format (CR/LF am Zeilenende anstatt nur LF)?
?

An welchem Zeilenende muss ich da etwas beachten?
Die Datei habe ich in der Tat unter Windows mit Notepad++ geschrieben und dann als createshare.sh abgespeichert.
Sollte das nicht auch funktionieren?
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
du musst beim Speichern sichstellen, dass du Unix/Linux Zeilenenden verwendest. Das sollte notepad++ eigentlich können. Guck dir diese Datei auf der DS mal mit dem Editor vi an. Hast du ^M an den Zeilenenden?
 

chrisrich

Benutzer
Mitglied seit
13. Sep 2012
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Ich habe die Datei gerade noch mal im vi geöffnet:

Sofern es da keinen versteckten Text in schwarz gibt steht da ausschließlich das, was ich oben auch reinkopiert habe.
Das hatte ich auch schon direkt auf der Datei kopiert, die ich mit dem vi geöffnet habe, um evtl. Schreibfehler oder Unterschiede zwischen der Notepad++-Version und der vi-Version zu vermeiden.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.250
Punkte für Reaktionen
2.845
Punkte
423
Ja, notepad++ ist ok, kann auch Unix-Files.
ASCII-Dateien unter Unix haben jeweils am Zeilenende nur ein LineFeed (LF), bei Windows ist CarriageReturn+Linefeed üblich.
Du musst notepad++ sagen, dass es Unix-Datei werden soll.
Wenn die Datei im falschen Format vorliegt, siehst bei "vi datei" ein ^M an jedem Zeilenende.

Edit: jahlives war schneller

Gruß Benares
 

chrisrich

Benutzer
Mitglied seit
13. Sep 2012
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Ich schreibe die Datei gerade direkt im vi neu. Dabei ist mir aufgefallen, dass ich dort Umlaute immer mit ae oe ue geschrieben habe.
In der Originaldatei ist ein ö vorhanden, wenn auch im Kommentar.
Könnte das ein Problem sein?
Auch wenn das für mich eigentlich keinen Sinn machen würde, da es nach der Angabe des Pfades zur Shell kommt und eigentlich als auskommentierter Text egal sein sollte.

Grüße,
chrisrich

Zusatz: Nachdem ich den gleichen Text im vi geschrieben habe taucht die Meldung tatsächlich nicht mehr auf (dafür andere, die aber etwas mit der synoshare-syntax zu tun haben) - was für meine anderen Skripte etwas ärgerlich ist, da ich ungern alle 220 Zeilen neuschreiben würde.

Notepad## hat die Skripte als Unix-Shell-Skripte abgespeichert. Muss ich bei der Einstellung von Notepad++ vielleicht etwas beachten?
 
Zuletzt bearbeitet:

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.250
Punkte für Reaktionen
2.845
Punkte
423
Notepad## hat die Skripte als Unix-Shell-Skripte abgespeichert. Muss ich bei der Einstellung von Notepad++ vielleicht etwas beachten?
Nein, eigentlich nicht. Nur das Format ist wichtig (und der Inhalt natürlich).
Hast du dir mal WinSCP angeschaut?
 

chrisrich

Benutzer
Mitglied seit
13. Sep 2012
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
WinSCP habe ich mir bisher noch nicht angeschaut.
Es scheint aber etwas mit Notepad++ zu tun zu haben.
Das gleiche Skript direkt im vi geschrieben macht keine Probleme und legt das share-Verzeichnis an.

Was macht WinSCP anders?

Zusatz: ich habe gerade noch mal meine Einstellungen unter Notepad++ angeschaut.
Unter -> Einstellungen -> Optionen, Reiter -> Dateien habe ich
=> Neue Datei: Format Unix
=> Kodierung UTF8

Das sollte eigentlich richtig sein, oder?
 
Zuletzt bearbeitet:

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.250
Punkte für Reaktionen
2.845
Punkte
423
Ich hab grad mal nachgeschaut.

In Notepad++ musst du "Bearbeiten", "Zeilenende", "Konvertiere zu Unix (LF)" auswählen sowie "Codierung", "UTF-8".

WinSCP ist ein FTP/SFTP/SCP Client. Damit kann man bequem in Unix-Filesystem navigieren, Dateien bearbeiten, Rechte setzen u.s.w. Der Editor macht es von Hause aus richtig.

Gruß Benares
 

chrisrich

Benutzer
Mitglied seit
13. Sep 2012
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Das Problem scheint tatsächlich das in Notepad++ erstellte #!/bin/sh zu sein.
Wenn ich die im vi lösche und neu schreibe funktionieren die Skripte - und das Problem taucht auch bei allen in Notepad++ erstellten Skripten auf.

Beim löschen der #!/bin/sh Zeile taucht am Anfang interessanter Weise 3x ein Zeichen auf, dass ich vom Eintippen der Umlaute kenne - eine Art schattiertes Kästchen in Zeichendimension. Vielleicht hilft das ja einem erfahreneren Anwender bei einer Fehlersuche.

Zusatz: Die schattierten Kästchen tauchen beim löschen der einzelnen Zeichen nur am Anfang auf - wenn alle 3 gelöscht werden kann der Rest des shebang stehen gelassen werden. Demnach wird durch das Schreiben in Notepad++ am Anfang etwas eingefügt, dass Probleme bereitet
 
Zuletzt bearbeitet:

chrisrich

Benutzer
Mitglied seit
13. Sep 2012
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
"Konvertiere zu Unix(LF)" ist ausgegraut, demnach scheint das schon ausgewählt zu sein. UTF8 hatte ich auch schon ausgewählt.
Da fehlt mir jetzt jede weitere Idee.

Hat WinSCP denn gegenüber Putty ein Vorteil in der Shell-Bearbeitung? Oder ist damit gemeint, dass ich die Dateien über WinSCP verschieben sollte und nicht über den FileBrowser der DS?
 

chrisrich

Benutzer
Mitglied seit
13. Sep 2012
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Beide Einstellungen habe ich überprüft - aber beide waren bereits dementsprechend eingestellt.
Das Schreiben der Skritpe scheint in Notepad++ zu klappen, aber das shebang muss ich überall erneuern.
Das macht die Arbeit schon mal leichter als alles neu schreiben zu müssen.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
mal statt UTF8 eine andere Codepage z.B. ASCII probiert?
 

chrisrich

Benutzer
Mitglied seit
13. Sep 2012
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Wie oben als Zusatz geschrieben: Die schattierten Kästchen tauchen beim löschen der einzelnen Zeichen nur am Anfang auf - wenn alle 3 gelöscht werden kann der Rest des shebang stehen gelassen werden. Demnach wird durch das Schreiben in Notepad++ am Anfang etwas eingefügt, dass Probleme bereitet.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.250
Punkte für Reaktionen
2.845
Punkte
423
Ich hab das eben mal versucht nachzuvollziehen.
Mit Kodierung UTF-8 hab ich tatsächlich mehrere "Steuerzeichen" am Dateianfang. Mit ANSI geht's, auch mit Umlauten.
Achte auf die Statusleiste in Notepad++. Unten rechts sollte UNIX, ANSI stehen.

Code:
#!/bin/sh
# öäüÄÖÜß
echo "Hallo"

Gruß Benares
 

chrisrich

Benutzer
Mitglied seit
13. Sep 2012
Beiträge
25
Punkte für Reaktionen
0
Punkte
0
Vielen Dank für den Tipp!
Das habe ich jetzt global und in allen Dateien umgestellt.
Nach dem nächsten Resetten werde ich noch mal eine Datei zum Testen vom Windows-Computer rüberkopieren und schreibe dann die Ergebnisse.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat