"exec Quelle <script>" funktioniert nicht in tcl
Ich versuche zu nennen, die ein Skript in Tcl mit dem Befehl:
exec source <script path>
und ich bekomme die Fehlermeldung
couldn't execute "source": no such file or directory
Wie kann ich ein Skript von tcl?
Edit: ich führe einen Befehl, den ich bekam von einer anderen person in mein Büro. Ich wurde angewiesen, zu laufen, "source" explizit mit der Quelle. Also in anderen Worten, wie würde ich einen beliebigen Befehl ausführen, würde die Arbeit in der cshell, in Tcl?
Können Sie klären, ob das andere script ist geschrieben in Tcl oder Csh? Ich nahm an, Tcl, andere sind davon Csh.
das Skript ist in der cshell.
das Skript ist in der cshell.
InformationsquelleAutor Amir Rachum | 2010-02-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
source
im csh, wie.
in bash, führt ein script aus, ohne erzeugen eines neuen Prozesses.Der Effekt ist, dass alle Variablen, die im Skript steht in der aktuellen csh-Sitzung.
Eigentlich
source
ist ein built-in-Kommando der csh, also nicht von tclexec
, und mitexec
ohnesource
würde nicht den spezifischensource
Wirkung.Gibt es keinen einfachen Weg, um Ihr problem zu lösen.
InformationsquelleAutor mouviciel
Wenn das Skript, das Sie gegeben wurden, ist cshell script, können Sie exec wie folgt:
In der Tat ist dies, was das 'source' - Befehl wird innerhalb einer interaktiven shell. Es ist nicht klar, ob dies wirklich das, was Sie tun wollen oder nicht (nicht genau, aber nahe genug, um diese Diskussion).
Der Grund Sie können nicht exec der Befehl source ist, dass exec funktioniert nur auf ausführbare Dateien (daher der name 'exec'). Der source-Befehl ist nicht implementiert, da eine exectuable-Datei, es ist ein Befehl eingebaut, um die shell. So kann es nicht sein, exec würde.
Wenn Sie wirklich das Gefühl die Notwendigkeit, exec der Befehl source oder andere built-in-Befehl können Sie etwas wie das hier tun:
In dem oben genannten Beispiel sind Sie execing die c-shell, und bittet, es zu führen Sie den Befehl "Quelle ". Für den speziellen Fall, den source-Befehl dies nicht wirklich viel Sinn.
Allerdings bin ich mir nicht sicher, dass jeder, der dies wirklich tun, was Sie erwarten. In der Regel, wenn jemand sagt, "hier sind einige Befehle, nur "Quelle", es in der Regel nur einige Aliase definiert und so weiter benutzt zu werden in einer interaktiven shell. Diese Aliase nicht funktionieren innerhalb von Tcl.
InformationsquelleAutor Bryan Oakley
Quelle laden der Quell-Datei
sollten Sie tun:
Wenn Sie ausführen möchten, dann müssen Sie rufen Sie die Haupt-proc.
andere option wäre, das zu tun:
Hi Amir, exec ist immer nenne ein Betriebssystem ausführbare Datei. Wenn Sie ausführen müssen, wie ausgeführt, von der c-shell oder bash oder ... müssen Sie die zweite option: exec [info nameofexecutable] <script path>, Wenn es nicht gut genug ist, zu beschreiben, warum 😉
Bekomme ich "konnte nicht Datei Lesen "source": no such file or directory"
Umm Amir, was ist das Ergebnis der Ausführung von "info nameofexecutable'? Ich mache diese Art von Sachen, die in meinen code in eine Menge von Orten, und es funktioniert. Sieht aus wie wir haben eine Art von Missverständnis.
Der Vorherige Fehler war, wenn die 'info nameofexecutable'. Bekomme ich "konnte nicht Datei Lesen "source": no such file or directory".
InformationsquelleAutor Carlos Tasada
Einige Verwirrung hier. exec läuft ein separates Programm, möglicherweise mit Argumenten.
Quelle ist kein separates Programm, es ist ein weiterer Tcl-Befehl liest eine Datei von Tcl-Befehle und führt Sie aus, aber nicht die Argumente. Wenn das andere Skript, das Sie versuchen zu nennen ist geschrieben zu werden führen Sie auf der Kommandozeile, erwartet er zu finden, die seine Argumente als eine Liste in der variable argv. Sie können gefälschte, indem argv die Liste der Argumente vor der Ausführung Quelle, zB.
Alternativ könnte man mit exec zu starten, eine ganze separaten Tcl ausführbare Datei, und übergeben Sie das Skript und Argumente:
Absolut richtig, danke, brauchen könnten: exec tclsh script_path first_arg second_arg
InformationsquelleAutor Colin Macleod
der Fehler spricht für sich selbst. Stellen Sie sicher, Sie geben Sie den Pfad-Namen, geben Sie den vollständigen Pfad, falls erforderlich. und stellen Sie sicher, es ist in der Tat die Datei in diesem Verzeichnis existiert
InformationsquelleAutor ghostdog74
Kürzlich wollte ich einige UNIX-Umgebungsvariablen durch die Beschaffung eines shell-Skript und stolperte über das gleiche problem. Ich fand diese einfache Lösung, die funktioniert perfekt für mich:
Nur ein wenig 3-line-wrapper-Skript, das ausgeführt wird den source-Befehl in einer UNIX-shell vor Ihre Tcl-Skript gestartet wird.
Beispiel:
InformationsquelleAutor MarkusG