sourcing eine Datei mit den env-Variablen von ksh
Habe ich das folgende code-snippet:
#!/bin/ksh
source /users/some_user/.cshrc
Jedoch läuft dies gibt die source: not found
Fehler.
Habe ich auch versucht, mit Hilfe der dot
- Betreiber wie:
#!/bin/ksh
. /users/some_user/.cshrc
Allerdings bedeutet dies nicht beheben das Problem, entweder, wenn es keine mehr gibt mir die source: not found
Fehler.
Was ist der richtige Weg, um die Quelle der .cshrc
Datei?
von
ksh
? Vorausgesetzt, es ist wirklich csh
- format in der .cshrc
würden Sie zu schreiben, ein filter zum konvertieren der csh-syntax zur ksh. du bist besser dran mit 2 Versionen des gleichen .rc-Datei, 1, csh-syntax und die anderen ksh-syntax. SONST edut Ihre Frage-Foto in oben genannter, um einige der code, der in .cshrc-Datei. Viel Glück.InformationsquelleAutor czchlong | 2013-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lesen einer Datei in
ksh
, die.
(Punkt) Befehl korrekt ist. Nurbash
fügt diesource
Befehl entlehntcsh
, aber es ist eine wortreiche synonym für.
.Ihre Verbleibende problem ist, dass die Datei, die gelesen werden sollte
ksh
- Datei, nicht eincsh
Datei — Notationen in ein C-shell-Datei (wiesetenv
) sind sehr unterschiedlich von denen in der POSIX-shells (bash
,ksh
, etc). Somit ist man vor einer schwierigen Aufgabe.Einen (messy!) Weg, um mit dem problem umzugehen ist:
Der Nachteil ist, dass die
exec
Operationen werden von hand ausgeführt wird (oder, zumindest, es ist schwer, es zu tun programmgesteuert). Die alternative ist die übersetzung der.cshrc
Datei inksh
notation (mitexport VAR=value
stattsetenv VAR value
etc).Wenn Sie automatisieren möchten, ist es, die übersetzung der
.cshrc
- Datei ist wahrscheinlich der beste Weg zu gehen.Ultra-simpel-Konvertierung von
csh
zuksh
Als eine sehr grobe, vereinfachende Ausgangspunkt betrachten:
Gegeben
.cshrc
- Datei mit:Ausgabe:
Dies ist unwahrscheinlich, ausreichend zu sein, aber es kann eine ausreichende starten, um Sie gehen.
.cshrc
- Datei enthält allesetenv
Befehle.Siehe auch tripleee'N Antwort für eine faszinierende alternative. Habe ich eine einfache
setenv() { export "$1"="$2"; }
und verwendet. cshrc
zu bekommen, die VAR und VAR_2 Werte richtig eingestellt. Dies wird nicht helfen, wenn es anderen C-shell-Operationen, insbesondere bedingte Operationen, in der.cshrc
- Datei, aber das ist eine Einschränkung für die Gliederung Perl-Skript zu.InformationsquelleAutor Jonathan Leffler
Wenn es nur ein paar
setenv
anrufen, können Sie Ihre eigenen definieren, ksh-Funktion.export "$1"="$2"
? Dieeval
sollte nicht notwendig sein, sollte es?Ich glaube, du hast Recht; danke für das feedback! Entsprechend aktualisiert.
Ich mag, was du getan hast — ich habe die verwiesen wird, in einem Kommentar auf meine Antwort.
InformationsquelleAutor tripleee
Könnten Sie versuchen
zu bestätigen, die Datei ist, wo Sie denken, es ist.
Der Punkt-operator wird ausführen der Datei.
Setzen eine echo-Anweisung in der .cshrc wird zeigen, dass es ausgeführt wurde.
Sich bewusst sein, dass
source
kann nicht funktionieren, es wird verwirrt durch die Tatsache, es ist ein csh nicht ksh Skript.Auch Lesen Sie diese
InformationsquelleAutor Owen Beresford
Klappt es mit dem dot-operator für mich :
meine ksh-version :
Wie schon gesagt, man kann nicht die Quelle einer csh - Datei. Für die Transformation der csh-Datei in der ksh, die Sie testen können, dieser sed-Befehl :
InformationsquelleAutor Gilles Quenot