请问在使用 alist-get 时,将图中蓝色区域的 'debian 替换成类似下方 (system-name) 的正确写法是?
ELISP> (alist-get (intern system-name) '((fedora . 1) (debian . 2)))
1 (#o1, #x1, ?\C-a)
2 个赞
Cool ~ 非常感谢!
在emacs中验证elisp代码的语法是否正确最快的方法就是 eval 这块的 expression。报错的话,会有报错的信息,然后再修改代码继续调试。
1 个赞
好的!谢谢!以后我也一定会先 eval 的。
其实发帖提问前,我将这段代码 eval 过了,但没有报错信息!也无法获得正确结果!
所以才向大家求助的!
无论如何,都很感谢你,给我提供了多一种解决问题的思路!
不客气 ,我估计简单的使用 (system-name) 也无法准确获取操作系统的类型吧。因为它获取的是 host name。
(system-name)
Return the host name of the machine you are running on, as a string.
Probably introduced at or before Emacs version 19.23.
要获取操作系统的类型,linux可以读取 /etc/os-release
下的信息。
下面是centos的信息:
╭─geekinney@VM-16-14-centos ~
╰─$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
manjaro信息
╭─geekinney@mjgnpi4 ~
╰─$ cat /etc/os-release
NAME="Manjaro ARM"
ID="manjaro-arm"
ID_LIKE="manjaro arch"
PRETTY_NAME="Manjaro ARM"
ANSI_COLOR="1;32"
HOME_URL="https://www.manjaro.org/"
SUPPORT_URL="https://forum.manjaro.org/c/arm/"
LOGO=manjarolinux
可以根据 ID 或者 name 来匹配。
1 个赞
Mac和windows用:
(eq system-type 'darwin) ;; => t
(eq system-type 'windows-nt) ;; => t
1 个赞
再次感谢 !学到啦!