Ubuntu - C Shell arbeitet nicht
-
Hallo,
ich muss im Rahmen meines Studiums einige Skripte mit der C Shell erstellen. Im Rechenzentrum (Sun Pool) ist das kein. Thema. Jetzt wollte ich daheim weiter arbeiten und habe auf meinem XUbuntu 8.10 (2.6.27-14-generic) über aptiude das Paket csh installiert.
Beim Aufruf eines Skrips (selbst eines einfachen Skripts mit einfacher "Hallo Welt"-Ausgabe) bricht mit folgender Meldung ab:
tux@erde:~/pfad/$ ./skript.sh HOST: Undefined variable.
Habe schon diverse Seiten durchstöbert, aber brachte bisher nichts. Der Skriptaufruf über den absoluten Pfad bricht auch nichts.
Der Aufruf der C Shell an sich funktioniert auch nicht 100% fehlerfrei:
tux@erde:~/pfad/$ csh HOST: Undefined variable. % echo "Hallo Welt" Hallo Welt %
Hat jemand einen Hinweis wo man ansetzen könnte bei der Fehlersuche?
Gruß
-
Kann es sein, dass die CSH eine .profile oä. einliest, die für die Bash gedacht war?
Mach mal ein "strace -f -e open csh".
-
Hallo nman,
erstmal danke für deine schnelle Antwort.
Hier der Output:open("/etc/ld.so.cache", O_RDONLY) = 4 open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 4 open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No suc h file or directory) open("/usr/share/locale/locale.alias", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.UTF-8/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/de_DE.utf8/LC_IDENTIFICATION", O_RDONLY) = 4 open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.UTF-8/LC_MEASUREMENT", O_RDONLY) = -1 ENOENT (No suc h file or directory) open("/usr/lib/locale/de_DE.utf8/LC_MEASUREMENT", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.UTF-8/LC_TELEPHONE", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/de_DE.utf8/LC_TELEPHONE", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.UTF-8/LC_ADDRESS", O_RDONLY) = -1 ENOENT (No such fi le or directory) open("/usr/lib/locale/de_DE.utf8/LC_ADDRESS", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.UTF-8/LC_NAME", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/de_DE.utf8/LC_NAME", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.UTF-8/LC_PAPER", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/de_DE.utf8/LC_PAPER", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.UTF-8/LC_MESSAGES", O_RDONLY) = -1 ENOENT (No such f ile or directory) open("/usr/lib/locale/de_DE.utf8/LC_MESSAGES", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.utf8/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.UTF-8/LC_MONETARY", O_RDONLY) = -1 ENOENT (No such f ile or directory) open("/usr/lib/locale/de_DE.utf8/LC_MONETARY", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.UTF-8/LC_COLLATE", O_RDONLY) = -1 ENOENT (No such fi le or directory) open("/usr/lib/locale/de_DE.utf8/LC_COLLATE", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.UTF-8/LC_TIME", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/de_DE.utf8/LC_TIME", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.UTF-8/LC_NUMERIC", O_RDONLY) = -1 ENOENT (No such fi le or directory) open("/usr/lib/locale/de_DE.utf8/LC_NUMERIC", O_RDONLY) = 4 open("/usr/lib/locale/de_DE.UTF-8/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/locale/de_DE.utf8/LC_CTYPE", O_RDONLY) = 4 open("/etc/csh.cshrc", O_RDONLY) = 0 open("/usr/local/sbin", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 0 open("/usr/local/bin", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 0 open("/usr/sbin", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 0 open("/usr/bin", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 0 open("/sbin", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 0 open("/bin", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 0 open("/usr/games", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|0x80000) = 0 open("/home/meinhome/.cshrc", O_RDONLY) = 0 HOST: Undefined variable. % --- SIGWINCH (Window changed) @ 0 (0) --- --- SIGWINCH (Window changed) @ 0 (0) --- --- SIGWINCH (Window changed) @ 0 (0) --- --- SIGWINCH (Window changed) @ 0 (0) --- ... // hier kommen noch mehr dieser Zeilen %
Also scheinbar ließt er die ~/.cshrc ein...
Hab diese mal nach der HOME gegrept:
switch (${HOST}) # Host mit spezieller Parallelrechner Software # Sollte für alle Hosts gelten, Reihenfolge ist entscheidend set prompt1 = "(`/usr/ucb/whoami`@`hostname`)"
Hilft das irgendwie weiter? Bin noch etwas überfragt
-
SCNR: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
nimm lieber die bash oder zsh für deine Skripten.
-
Naja, da hast Du Dein Problem doch schon. Offensichtlich wird $HOST in der .cshrc verwendet, vorher allerdings nicht definiert.
(Bin unabhängig davon rüdigers Meinung: csh lieber vermeiden, wenn möglich.)
-
Ich bin eurer Meinung und würde es gern vermeiden die csh zu nutzen, nur leider _muss_ ich das im Rahmen des Studiums - wie oben schon beschrieben
Aber vielen Dank trotzdem soweit.
-
Zum Thema: Falls Du es noch nicht machst, check einfach, ob $HOST definiert ist und setze es - falls nicht - auf die Ausgabe von hostname.
-
Mitlerweile funktioniert das mit der
csh
.Hier nochmal kurz aufgeführt was für Einstellungen nötig waren, falls jemand auch mal so ein Problem haben sollte:
1.) Installation der
coreutils
(für daswhoami
)
2.) Anlegen des Verzeichnis'/usr/ucb
3.) Symbolischen Link/usr/ucb/whoami
auf/usr/bin/whoami
4.) in der~/.cshrc
Abfrage ob$HOST
definiert, wenn nicht: z.B./etc/hostname
auslesen und entsprechend$HOST
setzenDanke nman für die Hinweise
-
Dazu ein paar Verbesserungsvorschläge/Anmerkungen:
hando schrieb:
1.) Installation der
coreutils
(für daswhoami
)Hu? Wie hast Du es denn geschafft, Ubuntu ohne coreutils zu installieren?
2.) Anlegen des Verzeichnis'
/usr/ucb
3.) Symbolischen Link/usr/ucb/whoami
auf/usr/bin/whoami
Klingt eher so, als solltest Du /usr/bin in Deinen $PATH hinzufügen.
4.) in der
~/.cshrc
Abfrage ob$HOST
definiert, wenn nicht: z.B./etc/hostname
auslesen und entsprechend$HOST
setzenLieber man: hostname(1) verwenden, das ist portabler.