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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur das Präfix der shell als Teil des Befehls. Ich habe nicht tcsh installiert, aber mit zsh:
Wie etwa:
Oder einfach nur schreiben Sie das Skript und fügen Sie
am Anfang der Datei und lassen Sie das OS kümmern.
Nur setzen Sie die shell verwenden, um sein
tcsh
: