Zum Inhalt springen

Shell Script von tcsh zu bash


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben
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/

Geschrieben
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" ]; ...

Geschrieben

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 ?

Geschrieben


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 :D

EDIT:

-f ignoriert ja das .tcshrc im Homeverzeichnis. Dennoch finde ich die If-Abfrage da oben verwirrend...

Geschrieben

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?

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...