Bisakah Emacs mendeteksi jalur yang dapat dieksekusi?

8

Misalkan saya memiliki dua emacs identik (dari versi yang sama) di sistem saya. Satu ditempatkan di C:\Program Files\Gnu Emacsdan yang lain di tempat yang berbeda, katakanlah C:\Program Files\New Gnu Emacs. Bisakah Emacs yang berjalan mendeteksi yang mana? Sebagai contoh, dapatkah ia memberikan path dari executable-nya (yaitu path di mana emacs.exe atau emacs.bin dapat ditemukan)?

Nama
sumber

Jawaban:

14

Dengan asumsi Emacs tahu cara memulainya, Anda dapat mengakses path lengkap file yang dapat dieksekusi dengan melakukan:

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

Dalam sistem saya, misalnya, ini kembali "/usr/local/bin/emacs"pada sesi reguler saya dan kembali "~/.evm/bin/emacs"pada sesi tes evm saya. Jika Anda ingin mendapatkan kemewahan, Anda juga dapat membungkusnya dalam file-truename untuk menyelesaikan semua tautan.


Dua variabel yang digunakan di atas, seperti yang dijelaskan oleh string dokumen mereka:

  • invocation-name

    Nama program yang digunakan untuk menjalankan Emacs.
    Setiap nama direktori dihilangkan.

  • invocation-directory

    Direktori tempat executable Emacs ditemukan, untuk menjalankannya.
    Nilainya nol jika nama direktori itu tidak diketahui.

Malabarba
sumber