Kann Emacs den Pfad seiner ausführbaren Datei erkennen?

8

Angenommen, ich habe zwei identische Emacs (derselben Version) auf meinem System. Einer wird an C:\Program Files\Gnu Emacsund der andere an einem anderen Ort platziert, sagen wir C:\Program Files\New Gnu Emacs. Kann ein laufender Emacs erkennen, welcher ist? Kann es beispielsweise den Pfad seiner ausführbaren Datei angeben (dh den Pfad, in dem sich emacs.exe oder emacs.bin befinden)?

Name
quelle

Antworten:

14

Vorausgesetzt, Emacs weiß, wie es gestartet wurde, können Sie auf den vollständigen Pfad der ausführbaren Datei zugreifen, indem Sie Folgendes tun:

(expand-file-name invocation-name invocation-directory)

In meinem System kehrt dies beispielsweise "/usr/local/bin/emacs"zu meiner regulären Sitzung und "~/.evm/bin/emacs"zu meiner evm-Testsitzung zurück. Wenn Sie Lust haben, können Sie dies auch in a file-truename einbinden, um eventuelle Symlinks aufzulösen.


Die beiden oben verwendeten Variablen, wie in ihren Dokumentzeichenfolgen beschrieben:

  • invocation-name

    Der Programmname, mit dem Emacs ausgeführt wurde.
    Alle Verzeichnisnamen werden weggelassen.

  • invocation-directory

    Das Verzeichnis, in dem die ausführbare Emacs-Datei gefunden wurde, um sie auszuführen.
    Der Wert ist null, wenn der Name dieses Verzeichnisses nicht bekannt ist.

Malabarba
quelle