
Ich möchte eine Datei in einem tcsh-Skript als Quelle verwenden. Im Code:
#!/bin/tcsh
unsetenv LD_LIBRARY_PATH
source $1
echo $LD_LIBRARY_PATH > temp_file
Das erwartete Ergebnis:Die vom Skript mit dem Quellbefehl festgelegte Umgebungsvariable wird in eine temporäre Datei gedruckt.
Tatsächliche Ergebnis:Die Quelldatei läuft einwandfrei, aber die LD_LIBRARY_PATH
Variable bleibt leer.
Irgendwelche Ideen, wie man das zum Laufen bringt?
PS tcsh
ist natürlich nicht meine bevorzugte Shell, aber ich habe bei der Arbeit ein Skript, das zahlreiche Umgebungsvariablen einrichtet, die tcsh
ich zum Laufen bringen möchte bash
. Ich dachte, der einfachste Weg (abgesehen davon, die tcsh
Shell jedes Mal neu zu schreiben) wäre, sie als Quelle zu verwenden, die Variablen in eine Datei auszudrucken und mit ein bisschen Shell-Magie alles wieder in Bash als Quelle zu verwenden.
Antwort1
Ich habe es mit csh unter OpenBSD versucht. Ich vermute, mein Beispiel funktioniert auch mit tcsh.
Datei test.csh:
#!/bin/csh
source data.csh
echo $VARIABLE
Datei data.csh
#!/bin/csh
setenv VARIABLE 1234
Ergebnis:
$ csh test.csh
1234
Antwort2
Zur weiteren Bezugnahme: Dies funktioniert tatsächlich, man sollte jedoch nicht den Shebang für den Tcsh-Pfad verwenden:
#!/bin/tcsh
sondern verwenden Sie stattdessen den Pfad zu „env“:
#!/usr/bin/env tcsh
um Flexibilität auf Systemen zu ermöglichen, auf denen tcsh in verschiedenen Pfaden installiert ist. Wenn „tcsh“ beispielsweise in „/usr/bin/tcsh“ installiert ist, schlägt ersteres fehl, während letzteres weiterhin funktioniert.