Wie kann ich in OpenVMS sehen, woher ein Befehl kommt - wie "which" in NIX

376
user1987442

Wenn ich in OpenVMS einen Befehl dosomething habe, wo kann ich sehen, woher es kommt (Position von Skript / exe - wie wird es definiert, wenn es sich um eine andere Tierart handelt)

4

3 Antworten auf die Frage

2
STTR

$ SHOW PROCESS / ALL

$ SHOW ENTRY

$ SHOW ENTRY / FULL

Ich glaube nicht, dass das OpenVMS ist user1987442 vor 11 Jahren 0
Wow, das ist meine epische Unaufmerksamkeit. Richtig. STTR vor 11 Jahren 0
1
Gotfryd

Es gibt drei DCL- "Quellen", von denen, wie Sie sagen, etwas Kommando "kommt".

Eine Warnung: Syntaxen mit sichtbarer expliziter DCL-Durchsetzung, wie:

$'dosomething' 

werden hier nicht gezählt, nur die "visible like command".

Auch explizite RUN- oder MCR-Befehle sind selbst Befehle, die dann run dosomethingnicht von Interesse sind.

Wie zu überprüfen

  1. Symbole

    Funktion: Wie Alias ​​* oder "Programm mit Parametern ausführen", fast wie beim MCR-Dosomething.

    Mach ein:

    $ show symbol dosomething 

    Symbole sind "Erstbenutzung" (wenn verwendet, hat dann Priorität vor den nächsten Schritten)

  2. Echter DCL-Befehl

    Es gibt kein integriertes Dienstprogramm zum Überprüfen der Befehlstabelle.

    Sie können jedoch ein Freeware-VERB-Dienstprogramm einrichten.

    Dann mache ein:

    $ verb dosomething 

    "Image" und "cliroutine" (in der VERB-Ausgabe) zeigen die EXE- oder interne DCL-Routine, in der der Befehl ausgeführt wird.

  3. Pfadnutzung

    Mach ein:

    $ directory DCL$PATCH:dosomething 

    Wenn eine .COM- oder .EXE-Datei vorhanden ist, wird die Befehlsprozedur fast wie after ausgeführt @DCL$PATH:dosomethingoder ein Image des Codes wird wie ausgeführt mcr DCL$PATH:dosomething.

    Pfadnutzung ist eine "letzte Chance" (nur wenn das Symbol nicht existiert oder nicht verwendet wird und der echte DCL-Befehl auch nicht vorhanden ist)

    "Fast" in der obigen Beschreibung, da es geringfügige Unterschiede bei der Syntaxinterpretation gibt, die meistens irrelevant sind.

Einige zusätzliche Erklärung

  1. Wenn ein Symbol existiert, dessen Name mit Ihrem "Befehl" übereinstimmt, kann der Inhalt des Symbols auf zwei Arten übersetzt werden:

    • Wenn der Inhalt mit "$" beginnt, heißt die Verwendung "Fremdbefehl" und führt ein Image (EXE-Datei) des restlichen Inhalts bis zum Trennzeichen aus (Parameter können fast wie in einem Alias ​​angewendet werden). Warnung: Das Standardverzeichnis der angegebenen .EXE-Datei lautet SYS $ SYSTEM:, nicht das Standardverzeichnis von process!

    • In allen anderen Fällen funktioniert der Wert möglicherweise als un * x-Alias.

    Der Wert des Symbols wird in die Befehlszeile "eingefügt", und der ersetzte Text wird als ("neuer") Befehl interpretiert.

    Das Wort "kann" bezieht sich auf die SET SYMBOL-Einstellung (HILFE SET SYMBOL für VERB-Beschreibung).

    Beachten Sie, dass der Alias ​​weiter zu einer anderen echten dcl-Syntax erklärt wird (true-Befehl, explizite "@" für Prozeduren oder "unsichtbare" DCL $ PATH-Verwendung), jedoch nicht für das nächste Symbol (Alias ​​oder Fremdbefehl).

    Es wird dringend davon abgeraten, einen echten DCL-Befehl durch Aliase zu ersetzen.

  2. Der Befehl true wird mit dem Befehl SET COMMAND gesetzt (naheliegend), die Namen der ausführbaren Dateien (EXE-Image oder interne DCL-Routine) stehen nicht in anderer Weise mit dem Befehlsnamen in Verbindung, auch wenn der Befehl meist ausreichend ist (der Befehl DIRECTORY führt ein SYS aus $ SYSTEM: DIRECTORY.EXE usw., aber APPEND führt COPY.EXE aus und HELP führt VMSHELP.EXE usw. aus.

  3. Pfad wird wie in un * x verwendet, aber:

    • Erst nachdem die true-Befehlstabelle geprüft wurde (natürlich auch nach dem Alias-Symbol, dies ist aber "un * x like")
    • Die Bilder, die für eine echte Befehlsverwendung vorgesehen sind, können in den meisten Fällen nicht auf diese Weise verwendet werden (existiert irgendwo mit unterschiedlicher Syntax, Beispiel: INSTALL).
0
PKM

Ich glaube nicht, dass es in OpenVMS genau so funktioniert, und es gibt keinen narrensicheren Weg. Für die DCL-Show würden die meisten Qualifikationsmerkmale in SYS $ SYSTEM: SHOW.EXE enden, aber ohne die MAP-Datei gibt es keine Möglichkeit herauszufinden, welches Quellmodul tatsächlich in diese ausführbare Datei aufgenommen wurde. DCL ist nicht wie Bash, wo es einen anderen Prozess als Fork-Exec ausführt und das Image dieses Befehls lädt.