• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Shellscript starten funtioniert bei einigen nicht [gelöst]

Spielwurm

Advanced Hacker
Ich habe eine neue Version von Datacrow auf meinen Rechner geholt, die Version, die man einfach nur ins /home-Verzeichnis kopiert und dann mit Shellscript die Java-Datei startet. Ich habe also jetzt zwei Ordner:
Code:
datacrow
und
Code:
datacrow-ganzneu
. Beide haben die gleichen Rechte und gehören mir. In jedem Ordner stecken unter anderem 2 Dateien: datacrow.jar und datacrow.sh, wobei die Shell-Scripte als "ausführbar" berechtigt sind. In den beiden Scripten steht drin:
Code:
java -jar -Xmx256m /home/hartmut/datacrow/datacrow.jar
Code:
java -jar -Xmx256m /home/hartmut/datacrow-ganzneu/datacrow.jar
Aufgerufen in der Konsole tut das erste Script, was es soll, beim zweiten kommt die Fehlermeldung:
Code:
hartmut@Jupiter:~> Error: Unable to access jarfile /home/hartmut/datacrow-ganzneu/datacrow.jar
Jetzt der Gag: kopiere ich die Zeile im zweiten Script in die Konsole und drücke Enter, dann tut der Befehl genau das, was ich erwarte. Die Rechte:
Code:
hartmut@Jupiter:~/datacrow> ls -l datacrow*
-rw-r--r-- 1 hartmut users 1580112 19. Jun 2010  datacrow.jar
-rwxr-xr-x 1 hartmut users      55 24. Jun 2010  datacrow.sh

hartmut@Jupiter:~/datacrow-ganzneu> ls -l datacrow*
-rw-r--r-- 1 hartmut users 1166047 23. Aug 2017  datacrow.jar
-rwxr-xr-x 1 hartmut users      64 27. Nov 17:05 datacrow.sh
Was geht da vor sich?

Spielwurm
 

abgdf

Guru
Schuß ins Blaue: Was mit dem Shell-Environment ("env | grep JAVA")?
Oder kann es sein, daß das Skript irgendwie als anderer Benutzer ausgeführt wird?
 
OP
S

Spielwurm

Advanced Hacker
Code:
hartmut@Jupiter:~> env | grep JAVA
JAVA_ROOT=/usr/lib64/jvm/jre-1.8.0-openjdk
JAVA_HOME=/usr/lib64/jvm/jre-1.8.0-openjdk
JAVA_BINDIR=/usr/lib64/jvm/jre-1.8.0-openjdk/bin
Das kann es nicht sein, denn der von Hand eingegebene Befehl funktioniert ja
 
OP
S

Spielwurm

Advanced Hacker
Code:
hartmut@Jupiter:~> ls -l -d data*
drwxrwxrwx 22 hartmut users 4096 27. Nov 17:02 datacrow
drwxrwxrwx 14 hartmut users 4096 27. Nov 17:05 datacrow-ganzneu
 
A

Anonymous

Gast
Spielwurm schrieb:
Code:
hartmut@Jupiter:~/datacrow-ganzneu> ls -l datacrow*
-rw-r--r-- 1 hartmut users 1166047 23. Aug 2017  datacrow.jar
-rwxr-xr-x 1 hartmut users      64 27. Nov 17:05 datacrow.sh

ich denke die Datei datacrow.sh ist mit 64 ein Byte zu lang, Könnte ein Leerzeichen am Ende sein, oder aber meine Vermutung:
solche und noch verrücktere komischen Auswirkungen haben sehr gerne Schellscripte die keine Unix-Zeilenvorschub haben sondern Windows(DOS) Zeilenvorschub.

versuche mal folgendes: folgender Befehl auf die Datei würde wenn das so sein sollte wie ich vermute auf Linux umstellen
# dos2unix datacrow.sh

alternativ würde auch gehen, den Inhalt der Datei in Zwischenspeicher, dann die Datei zu löschen (wichtig), und mit einem vernünftigen (Linux) Texteditor wieder neu mit Inhalt anlegen.

robi
 
OP
S

Spielwurm

Advanced Hacker
Code:
# dos2unix datacrow.sh

Das war es! Da wär ich nie drauf gekommen. Vor allem, weil ich in der Konsole das bereist mitgelieferte Script mit Joe auf den richtigen Pfad editiert habe. Gibt es eine Möglichkeit, den Windows-Zeilenvorschub zu erkennen?

Danke,

Spielwurm
 
A

Anonymous

Gast
Das kann in den allermeisten Fällen schon ganz einfach mit dem Kommando "file" erkennt werden.

Code:
puppe@lux001:~> ls -l datacrow.sh 
-rw-rw-r-- 1 puppe users 63 27. Nov 21:23 datacrow.sh
puppe@lux001:~> file datacrow.sh 
datacrow.sh: ASCII text
puppe@lux001:~> unix2dos datacrow.sh 
unix2dos: Datei datacrow.sh wird ins DOS-Format konvertiert ...
puppe@lux001:~> file datacrow.sh 
datacrow.sh: ASCII text, with CRLF line terminators
puppe@lux001:~> ls -l datacrow.sh 
-rw-rw-r-- 1 puppe users 64 27. Nov 21:24 datacrow.sh
siehe die Erweiterung "with CRLF line terminators" in der Ausgabe von file

robi
 

abgdf

Guru
robi schrieb:
solche und noch verrücktere komischen Auswirkungen haben sehr gerne Schellscripte die keine Unix-Zeilenvorschub haben sondern Windows(DOS) Zeilenvorschub.
:thumbs: Ja, stimmt. Kenn' ich eigentlich auch, z.B. wenn man Python-Skripte von Windows nach Linux überträgt (muß man halt erst ein dos2unix drauf machen). Hatte jetzt nicht an Windows gedacht.
 
OP
S

Spielwurm

Advanced Hacker
@Robi: Mein ehrfürchtigstes Chapeau!
Ich schließe mich dem an!
Anmerkung: ich habe persönlich schon lange nichts mehr mit Windows zu tun, deshalb ist mir auch nicht in den Sinn gekommen, dass mir jemand ein Shellscript liefert, das mit einem Windows-Editor geschrieben wurde ...

Spielmops
 
Oben