Wenn das Ziel ist einfach die Befehle in der csh
Skript auszuführen und erhalten keine Ergebnisse zurück, gibt es keine Notwendigkeit, zu source
es.
Wenn Sie etwas zurückbekommen müssen - z. die Werte einiger Variablen - mein Vorschlag wäre zwei Schreiben eines csh
Wrapper-Skript, das diese Variablen als sh
-kompatible Zuordnungen druckt.
#!/bin/csh -f
source specialPreCshellScript.csh
printf "%s=%s\n" variable1 "$variable1" another "$another" third "$third"
Nennen Sie es, wie
eval $(csh_wrapper_script); ... do stuff with the variables
Wegen, wie funktioniert Stellen (Standardeinstellung), um die Einstellungen, die Sie eval
erhalten gehen verloren, wenn die Befehlszeile beendet. Also in Ihrem Beispiel some_SH_steps
keinen Zugriff auf das Ergebnis aus csh
haben, wenn Sie es zwingen, in der gleichen Befehlszeile auszuführen, vielleicht so:
eval $(csh_wrapper_script); some_SH_steps
und ähnlich tack auf einem Wrapper für den zweiten csh
Skript nach some_SH_steps
wenn Sie das im selben Kontext auch brauchen.
Was machen die 'csh' Skripte? Sind sie mit 'sh' kompatibel? –
"Sourcing" sie macht überhaupt keinen Sinn. In Ihrem Beispiel wird die Shell, die die erste 'source 'ausführt, beendet, wodurch alle möglichen Vorteile von' source 'verloren gehen. Wenn das Ziel darin besteht, einige Variablen, vielleicht am Ende des 'csh'-Skripts, zu setzen, drucken Sie die Werte als variable Zuweisungen in der' sh'-Syntax aus, und beziehen Sie sie von Make. – tripleee