有没有一个变量用于储存linux distro

如题 想判断是否为archlinux或其子版本 否则抛出错误

只知道一个不太好的解决方案

(shell-command-to-string "lsb_release -sd")

(executable-find "pacman")

2 个赞

我其实在想有没有不用shell-command的方案

改成自带的executable-find函数了

真的秒改哈哈哈哈 我刚才看通知还是which

 lsb_release - print distribution-specific information

没有, 但是你可以通过包管理器和`powershell.exe"特定

你是指 Emacs 变量的话,答案是没有。

system-configuration
;; => "x86_64-apple-darwin19.6.0"

变量 system-name,不过已经废弃了,虽然还能用,可以用 system-name 函数来代替。

(system-name)

这个是hostname,可以自己改(我用这个来分辨是我的台式机还是我的笔记本)

感觉这个会把MSYS2也算进Archlinux的衍生版……毕竟人家也是用pacman的。感觉去看 /etc/os-release 会是另一个选择?

operating-system-release is a variable defined in ‘C source code’.
Its value is "5.9.2-arch1-1"

Documentation:
The release of the operating system Emacs is running on.

我用屏幕的宽度 (display-mm-width) 来区分是笔记本还是台机。如果外接显示器就区分不了。

operating-system-release is a variable defined in ‘C source code’.

Its value is “4.19.84-Microsoft-standard”

Documentation: The release of the operating system Emacs is running on.

uname -r等价

1 个赞

/etc/os-release is systemd’s advisory

而且衍生发行版(比如Manjaro)只会说自己是XXX发行版不会说是派生自Arch

如果觉得判断错MSYS2可以先判断系统类型(system-type)

恩,有道理。但我还是觉得判断“pacman”不是个优雅的方法。万一人家PATH下有个东西就叫pacman呢?毕竟还是有吃豆人这个东西的。

// 其实我想知道的是,楼主究竟为什么要判断是不是archlinux或者衍生发行版。是想知道pacman能不能用吗?

我想知道当前系统是否为arch及其衍生版本