wie Quelle ein csh-Skript in bash um die Umwelt
Wir haben Oracle unter Solaris, und die Schale ist standardmäßig csh. Also das login-Skript legt die oracle_home, oracle_sid in der csh auch. Aber ich weiß nicht wie csh und möchten bash verwenden, um meine Arbeit zu tun. So, wie die Quelle der login-csh-Skript in bash?
e.g, die folgende ist, was in der .cshrc-Datei. Und wenn die bash benutzt, möchte ich diese Variablen verwenden. Eine Möglichkeit ist, kopieren Sie die Variablen wieder und verwenden die bash-Befehl, wie der export ORACLE_SID=TEST. Aber damit wird verlangt von uns, dass zwei Kopien der Dateien. Und wenn wir ändern den Namen der Datenbank, oder aktualisieren Sie die Datenbank, die ich halten müssen, um die bash-login-Datei separat. Es ist schön, um Sie nur so etwas wie
Quelle .cshr in der bash, aber es funktioniert nicht.
setenv ORACLE_SID TEST setenv ORACLE_HOME /oracle/TEST/home/Produkte/10204 setenv EPC_DISABLED WAHR setenv MANPATH /usr/local/man:/usr/share/man setenv EDITOR vi setenv LD_LIBRARY_PATH $ORACLE_HOME/lib:/usr/sfw/lib/64 setenv NLS_LANG AMERICAN_AMERICA.UTF8 setenv NLS_DATE_FORMAT "DD-MON-RR"
InformationsquelleAutor der Frage Daniel | 2010-04-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem
~/.bashrc
(oder die erste von~/.bash_profile
~/.bash_login
und~/.profile
existiert) Quelle dieses Skript mit so etwas wie. ~/bin/sourcecsh
:Diese version beseitigt das böse
eval
:Edit:
Ohne sourcing stdin:
InformationsquelleAutor der Antwort Dennis Williamson
Ich bin im gleichen Boot. Ein Mitarbeiter zeigte mir Folgendes:
Beginnen, bash, ohne das Zeug in thwe Umgebung:
Hier ist die csh-Datei, wird die Quelle würde:
Hier ist der Befehl:
Blick auf die Ausgabe von csh
Und Blick auf die Ausgabe von der neuen bash-shell
Nun verlassen, und gehen Sie zurück zu der ursprünglichen bash-shell
Hinweis: echo $$ zu sehen, die Prozess-IDs, so dass wir sehen können, Sie sind verschiedene shell-Prozesse.
Mein Kollege verwendet dieses genug, dass er steckt es in ein alias, wie:
Leider habe ich festgestellt, dass ich oft erforderlich, nicht nur die Umgebungsvariable einrichten, aber auch Aliase einrichten, als in der Modul-Paket http://modules.sourceforge.net/.
Ich in der Lage gewesen, dies zu automatisieren "csh source-Skript-Rezepte", die durch die Verwendung von Perl Erwartet. Aber ich habe nicht in der Lage gewesen zu sein, so interaktiv wie ich möchte, außer dem oben genannten.
InformationsquelleAutor der Antwort Krazy Glew
In Ihrem bash
.profile
können Sie Folgendes tun:InformationsquelleAutor der Antwort DVK
Nur die Definition einer Funktion namens setenv, wie so
dann sourcing .cshrc-Datei.
Wenn ich das in bash bekomme ich
InformationsquelleAutor der Antwort Dave Wade-Stein
Nur so kann ich mir vorstellen, es zu tun, wäre die Last csh, und rufen Sie dann die bash, die neue shell. So csh könnte, parse, Datei, und dann die bash, dass es spawnt Erben würde, die Umwelt sowie.
InformationsquelleAutor der Antwort sblom
Für etwas, das klein ist, ist es üblich, erhalten zwei setup-Skripte, eines für sh und sh-abgeleitet, Muscheln, und eine für csh und tcsh. Wie Sie erwähnen, dass nicht das Risiko schaffen die zwei scripts immer out of sync-- es sei denn Sie erzeugen eine von der anderen, oder generieren, die beide aus einer gemeinsamen Quelle.
Diesen Orten die Belastung für die Betreuer des setup-script(s), anstatt sich auf jeden Benutzer aus, um Sie zu benutzen.
InformationsquelleAutor der Antwort Keith Thompson
Gibt es ein Modul zur Verfügung, mit denen Sie die Quelle derselben Datei, wo immer Sie wollen, in ein perl-Skript. Und erhalten Sie alle environment-Pfade zur Verfügung, die in Ihre csh-Datei.
Gehen durch eine kleine Dokumentation für die Nutzung.
InformationsquelleAutor der Antwort Mak_Thareja
Nur mit einem "
#!/bin/tcsh
" oder ähnlicher Aussage zur Verfügung zu Beginn des CSH-Skript in Verbindung mit macht das Skript ausführbar das problem bei mir gelöst. Ich konnte den direkten Aufruf von CSH-Skript von der bash in diesem Fall.Als Beispiel, ich hatte, um Werkzeuge.csh aus einem bash-Skript aufgerufen setup.sh. Ich habe so etwas in der bash-Skript:
InformationsquelleAutor der Antwort Somesh
Sourcing eine csh Datei in bash nicht funktionieren. Sie können ändern Sie den Standard-login-shell csh, bash, wenn Sie mehr sind komfortabel in der bash. Sie verwenden konnte chsh oder als admin zu ändern es für Sie.
InformationsquelleAutor der Antwort Sid Heroor