我正在尝试创建一个脚本,该脚本要求我打印 debian 代号,以便我可以将其回显到 sources.list 文件中。
我试图让这个脚本在任何版本的 Debian 上工作,所以我希望设置一个发行代号的 bash 变量。这很容易做到(使用 lsb_release -c),但是我们的部署映像默认不包含 lsb_release - 并且需要此脚本来修复 sources.list,使用 apt-get 安装 lsb-release 将不是一个选项.
我找到了很多方法来获取有关系统的版本号和其他信息,但找不到可靠的地方来获取代号。
任何想法将不胜感激!
(我正在测试的操作系统是 Debian Squeeze)
cuo*_*glm 23
您可以使用/etc/os-release:
(
. /etc/os-release
printf '%s\n' "$VERSION"
)
7 (wheezy)
Run Code Online (Sandbox Code Playgroud)
小智 17
挤压不附带/etc/os-release,这是我的“黑客”:
dpkg --status tzdata|grep Provides|cut -f2 -d'-'
Run Code Online (Sandbox Code Playgroud)
您可以打印代码以及 debian 的版本号:
root@debian:/home/mohsen# grep "VERSION=" /etc/os-release |awk -F= {' print $2'}|sed s/\"//g
8 (jessie)
Run Code Online (Sandbox Code Playgroud)
或者,您可以从数字中提取您的代号并大声疾呼:
grep "VERSION=" /etc/os-release |awk -F= {' print $2'}|sed s/\"//g |sed s/[0-9]//g | sed s/\)$//g |sed s/\(//g
jessie
Run Code Online (Sandbox Code Playgroud)
您可以从 获得 Debian 发行版的代号/etc/os-release。您可以不尝试解析此文件,而是将其导入到新环境中,以免影响您当前的环境,并echo在该新环境中执行命令。
env -i bash -c '. /etc/os-release; echo $VERSION_CODENAME'
Run Code Online (Sandbox Code Playgroud)
分解:
env : 在新环境中运行命令。-i : 不要从现有环境继承环境变量。bash : 运行 bash 以便我们有一个 shell 来获取 os-release 文件,并运行 echo 命令。-c: 告诉bash我们要执行命令而不是启动交互式 shell。. /etc/os-release:将 的内容os-release导入到我们的新环境中。os-release包含几行设置环境变量,这将在我们的新环境中设置这些环境变量。; : 分开这个命令并运行下一个命令。echo $VERSION_CODENAME: 回显os-release文件设置的代号。| 归档时间: |
|
| 查看次数: |
19333 次 |
| 最近记录: |