In python 2.4, wie kann ich das ausführen von externen Befehlen, die mit csh anstatt bash?

Ohne mit dem neuen 2.6 subprocess-Modul, wie bekomme ich die beiden os.popen oder os.system zur Ausführung meiner Befehle mit der tcsh statt bash? Ich brauche die Quelle einige Skripte, die geschrieben sind in tcsh, bevor Sie ein paar weitere Befehle, und ich muss dies innerhalb von python2.4.

BEARBEITEN
Vielen Dank für die Antworten mit der 'tcsh -c', aber ich möchte dies vermeiden, weil ich zu tun haben zu entkommen der Wahnsinn. Die Zeichenkette wird interpretiert von bash und dann interpretiert durch die tcsh. Ich werde etwas zu tun haben wie:

os.system("tcsh -c '"+re.compile("'").sub(r"""'"'"'""",my_cmd)+"'")

Kann ich nicht einfach sagen, python zu öffnen, eine 'tcsh' sub-Prozess statt von einem 'bash' Teilprozess? Ist das möglich?

P. S.
Ich merke, dass die bash ist der cat ' s meow, aber ich arbeite in einem Unternehmen, und ich werde wählen, um zu nicht Kampf ein tcsh-vs bash-Kampf -- größere Fische zu braten.

  • was meinst du mit "Quelle"?
  • Wenn Sie einen Befehl ausführen, wie " Quelle env_mod.csh' das Skript ändern Sie Ihre aktuelle shell. Wenn Sie 'tcsh -f env_mod.csh' das shell-Skript erstellen einer Kind-shell, erbt die Umgebungsvariablen für Ihre aktuelle shell und führen Sie ohne änderung der parent-shell.
  • Beispiel schließt Ihre ~/.bashrc-Datei, die wird 'sourced' beim start einer neuen bash-shell.
  • ich weiss das, ich war einfach nicht sicher, wohin Sie eigentlich wollte-source-etwas-aus in os.system() oder aus einem shell-Skript aus, das Sie aufrufen, mit os.system()...
  • Es gibt viele Electronic-Design-Automation-CAD-tools (z.B. Specman, VManager, VCS, NCSim), die eine env.csh, die Sie source, um das setup Ihren WEG, Lizenz, server, env Pointern, die verschiedenen Stücke. Im Grunde möchte ich auf diese Quelle env-setup-Dateien und dann einen Befehl ausführen.
  • z.B. os.system('source $SPECMAN_HOME/env.csh -64bit && specman -c "load foo.e; schreiben stubs -vcssv"')<BR> Das problem ist, dass os.system führt die bash und ich muss tcsh, weil das ist, was jeder nutzt, in meiner Firma.

InformationsquelleAutor Ross Rogers | 2009-02-10
Schreibe einen Kommentar