入口在哪里
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
Run Code Online (Sandbox Code Playgroud)
取名字来自?
这就是为什么这不是“如何安全地在 grub 启动菜单中更改操作系统名称?”的原因:
我已经知道在 GRUB 启动菜单中分配给操作系统的名称可以通过注释来更改
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian
Run Code Online (Sandbox Code Playgroud)
并替换条目
GRUB_DISTRIBUTOR="Some other name"
Run Code Online (Sandbox Code Playgroud)
(在引号中)。
我找到的所有解释都只是说:
GRUB_DISTRIBUTOR=lsb_release -i -s 2> /dev/null || echo Debian -
Run Code Online (Sandbox Code Playgroud)
“这一行只是检索菜单项中的名称。” 很公平!但我想知道:这个命令从哪里检索实际名称?名称必须以纯文本形式包含在某个文件中!
Zan*_*nna 10
如果我strace命令lsb_release -i -s...
strace -o strace.out lsb_release -i -s
Run Code Online (Sandbox Code Playgroud)
我发现(从输出文件strace.out)它正在读取/etc/lsb-release
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS"
Run Code Online (Sandbox Code Playgroud)
的输出lsb_release -i -s是Ubuntu
重定向2> /dev/null将命令中的任何错误发送到数据遗忘
运算符的||意思是当(且仅当)第一个命令失败时,执行第二个命令:
first command || second command
Run Code Online (Sandbox Code Playgroud)
因此,如果lsb_release -i -s出现错误,错误将转到/dev/null并echo Debian执行命令。它的输出是Debian
所以总结一下:
如果lsb_release -s -i可以给我们当前系统的名称,然后使用它并显示输出。如果没有,就叫它“Debian”
该文件/etc/default/grub用于生成调用/boot/grub/grub.cfg时由GRUB( )读取的配置文件update-grub,因此在挂载真正的根文件系统时读取。
您必须sudo update-grub在编辑文件后运行才能使任何更改生效。
| 归档时间: |
|
| 查看次数: |
3799 次 |
| 最近记录: |