Sourcing einer Datei innerhalb eines Skripts

Sourcing einer Datei innerhalb eines Skripts

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_PATHVariable bleibt leer.

Irgendwelche Ideen, wie man das zum Laufen bringt?


PS tcshist natürlich nicht meine bevorzugte Shell, aber ich habe bei der Arbeit ein Skript, das zahlreiche Umgebungsvariablen einrichtet, die tcshich zum Laufen bringen möchte bash. Ich dachte, der einfachste Weg (abgesehen davon, die tcshShell 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.

verwandte Informationen