TiMmEkK Geschrieben 15. Januar 2008 Geschrieben 15. Januar 2008 Hi, hab hier nen Problem. ich habe hier nen script bekommen, welches unter solaris läuft. es ist für die tcshell geschrieben. ich soll nun dieses script so ändern, dass es auch für die bash funktioniert. nur leider hab ich nicht mal eine ahnung was dieses script überhaupt macht und ob die parameter in der bash ähnlich oder gleich sind. ien paar kleinigkeiten habe ich schon geändert, wie zum beispiel das "endif" hab ich durch "fi" ersetzt. ich hoffe es kann mir wer helfen danke! # cat ~/.tcshrc # # umask 022 set CDPATH = .:~ set history = 500 set savehist = 300 set noclobber set notify set filec set ignoreeof set fignore = .o \~ unset autologout # if interactive shell, allow 8bit mode and set nice prompt # for X / non X environment (must be set here, otherwise prompt # will be overruled by default shell prompt) if ($?prompt) then stty cs8 -parenb -istrip if ("$TERM" == "xterm" | "$TERM" == "dtterm") then set prompt="%{\e]2\;%n@%m:%~^g\r%}%B%h %T %#%b " else set prompt = "%B[$USER@%m] %c06 %h %#%b " fi fi Zitieren
shutdown-Frnow Geschrieben 15. Januar 2008 Geschrieben 15. Januar 2008 naja das programm setzt deine umgebungsvariablen und dein prompt bei benutzung der tc shell für bash gibts da natürlich die .bashrc Zitieren
TiMmEkK Geschrieben 15. Januar 2008 Autor Geschrieben 15. Januar 2008 ja, udn das script soll ja in die .bashrc nur eben so, das es auch funktioniert und ich bin gerade schon dabei und versuche das zu ändern. aber jedesmal wenn das script ausgeführt wird kommt: bash: [1prompt]: command not found das scheint es unter bash nicht zu geben. habe nun noch mal den "if"-teil überarbeitet: if [$?prompt]; then stty cs8 -parenb -istrip if ["$TERM" == "xterm" | "$TERM" == "dtterm"]; then set prompt="%{\e]2\;%n@%m:%~^g\r%}%B%h %T %#%b " else set prompt = "%B[$USER@%m] %c06 %h %#%b " fi fi ich hoffe das stimmt so von der syntax her. ich muss noch mal die opertatoren wie "==" und "|" nachgucken ob die so sind oder anders. Zitieren
geloescht_JesterDay Geschrieben 15. Januar 2008 Geschrieben 15. Januar 2008 nur leider hab ich nicht mal eine ahnung was dieses script überhaupt macht... Also erstmal werden einige Umgebungsvariablen gesetzt, keine Ahnung ob du die wirklich brauchst, schaden tun sie aber auf jeden Fall ja nichts Dann wird der Promt je nach Terminal (X oder nicht X) gesetzt. Der Prompt ist das, was du am Anfang jeder Zeile in der Shell siehst, vor deinen Eingaben. Zum Bash-Prompt: http://tldp.org/HOWTO/Bash-Prompt-HOWTO/ Zitieren
lupo49 Geschrieben 15. Januar 2008 Geschrieben 15. Januar 2008 ja, udn das script soll ja in die .bashrc nur eben so, das es auch funktioniert und ich bin gerade schon dabei und versuche das zu ändern. aber jedesmal wenn das script ausgeführt wird kommt: bash: [1prompt]: command not found das scheint es unter bash nicht zu geben. habe nun noch mal den "if"-teil überarbeitet: if [$?prompt]; then stty cs8 -parenb -istrip if ["$TERM" == "xterm" | "$TERM" == "dtterm"]; then set prompt="%{\e]2\;%n@%m:%~^g\r%}%B%h %T %#%b " else set prompt = "%B[$USER@%m] %c06 %h %#%b " fi fi ich hoffe das stimmt so von der syntax her. ich muss noch mal die opertatoren wie "==" und "|" nachgucken ob die so sind oder anders. if [ $prompt ]; then ... if ["$TERM" = "xterm" -o "$TERM" == "dtterm" ]; ... Zitieren
TiMmEkK Geschrieben 16. Januar 2008 Autor Geschrieben 16. Januar 2008 also, das hat nun alles noch geklappt. bin nun weiter bei und habe hier nen statement if (( -f /etc/.login ) && ( ${SHELL} == /usr/bin/tcsh )) then echo "--- sourcing /etc/.login..." source /etc/.login endif wenn mir nun noch einer genau sagen kann, wie ich das -f für die bash übersetze. das kann ich auch nicht in der man page finden. ich weiss wohl, dass es soviel heisst, dass /etc/.login ignoriert wird. -f The shell ignores ~/.tcshrc, and thus starts faster. so, aber mit welchem parameter kann ich das -f denn in die bash übersetzen ? Zitieren
geloescht_JesterDay Geschrieben 16. Januar 2008 Geschrieben 16. Januar 2008 if (( -f /etc/.login ) && ( ${SHELL} == /usr/bin/tcsh )) then echo "--- sourcing /etc/.login..." source /etc/.login endif Also, ich übersetz das mal wie ich es verstehe: Wenn /etc/.login ausgelassen werden soll und es die tcsh shell ist, dann lade /etc/.login und führ es aus. :eek Wie du das Auslassen von /etc/.login umsetzt? Einfach weglassen EDIT: -f ignoriert ja das .tcshrc im Homeverzeichnis. Dennoch finde ich die If-Abfrage da oben verwirrend... Zitieren
TiMmEkK Geschrieben 16. Januar 2008 Autor Geschrieben 16. Januar 2008 ok, dann werde ich es mal damit versuchen. danke! Zitieren
lupo49 Geschrieben 16. Januar 2008 Geschrieben 16. Januar 2008 Fuer mich heißt die If-Abfrage nur, dass er guckt ob die Datei existiert (-f => return true if file is regular file), wenn das der Fall und die momentane Shell die tcsh ist dann springe in das If-Konstrukt. Habt ihr das so gemeint habt in euren Posts? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.