在window10上執行emacs-27.1會因為路徑問題而導致有些命令不能正常應用,比如find。
PS C:\\Users\\gaowei> scoop which findC:\\Windows\\system32\\find.exe
無論用find還是用find.exe全部呼叫的是windows的命令,如果直接在emacs中用grep-find命令會報錯:
迂迴的解決方案是安裝busybox,用grep-find的時候加字首:
然而反覆輸入busybox著實影響效率。
有沒有更優的解決方案呢?
Emacs的路徑Path我們可以用getenv函式參與emas的路徑:
ELISP> (getenv "PATH")
"C:\\\\ProgramData\\\\scoop\\\\shims;C:\\\\Windows\\\\system32;C:\\\\Windows;C:\\\\Windows\\\\System32\\\\Wbem;C:\\\\Windows\\\\System32\\\\WindowsPowerShell\\\\v1.0\\\\;C:\\\\Windows\\\\System32\\\\OpenSSH\\\\;C:\\\\ProgramData\\\\chocolatey\\\\bin;C:\\\\Users\\\\gaowei\\\\scoop\\\\shims;C:\\\\Users\\\\gaowei\\\\AppData\\\\Local\\\\Microsoft\\\\WindowsApps"
注意其中的反斜槓,真讓人頭疼。
我們同時會注意到,emacs中有71中與path相關的變數。
修改PATH路徑我們呼叫函式setenv修改環境變數PATH。
(setenv VARIABLE &optional VALUE SUBSTITUTE-ENV-VARS)
我們在上文中苦惱於冗餘的反斜槓,emacs提供了便捷的解決方案,直接用/替代\\。因此最總的路徑,我們可以修改為:
"C:/ProgramData/scoop/shims;C:/Users/gaowei/scoop/shims;C:/Users/gaowei/.emacs.d/bin;C:/Users/gaowei/AlphaApps;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0;C:/Windows/System32/OpenSSH/;C:/Users/gaowei/AppData/Local/Microsoft/WindowsApps") nil)
由於我們的配置要適配於多種系統,因此要加上選擇語句:
(if (eq system-type 'windows-nt) (setenv "PATH" "C:/ProgramData/scoop/shims;C:/Users/gaowei/scoop/shims;C:/Users/gaowei/.emacs.d/bin;C:/Users/gaowei/AlphaApps;C:/Windows/system32;C:/Windows;C:/Windows/System32/Wbem;C:/Windows/System32/WindowsPowerShell/v1.0;C:/Windows/System32/OpenSSH/;C:/Users/gaowei/AppData/Local/Microsoft/WindowsApps") nil)
其中變數”system-type"記錄了當前作業系統種類。
ELISP> (eval 'system-type)windows-ntELISP> (eval 'system-type)windows-nt
此時,grep-find就能無礙執行。
以上,變數修改完成,我的機器資訊為:
gaowei@alpha ------------ OS: Windows 10 專業版 x86_64 Host: TIMI RedmiBook 16 Kernel: 10.0.19041 Uptime: 7 hours, 57 mins Packages: 27 (scoop) Shell: bash 4.4.23 Resolution: 1920x1080 DE: Aero Terminal: Windows Terminal CPU: AMD Ryzen 5 4500U with Radeon Graphics (6) @ 2.370GHz GPU: Caption GPU: AMD Radeon(TM) Graphics GPU Memory: 8640MiB / 15741MiB
Emacs相關問題,期待留言交流。
最新評論