以下是一个简单的 Bash 脚本,用于以交互方式更改 Ubuntu 20 系统的主机名:
1#!/bin/bash
2
3# 提示用户输入新的主机名
4read -p "请输入新的系统名称(主机名): " new_hostname
5
6# 检查是否输入了新的主机名
7if [ -z "$new_hostname" ]; then
8 echo "错误:未输入新的系统名称!"
9 exit 1
10fi
11
12# 备份当前的hostname文件
13sudo cp /etc/hostname /etc/hostname.bak
14
15# 更新 hostname 文件
16sudo sed -i 's/.*$/'"$new_hostname"'/' /etc/hostname
17
18# 更新 hosts 文件
19sudo sed -i "s/127.0.1.1.*$/127.0.1.1 $new_hostname/" /etc/hosts
20
21# 通知用户重启系统以应用更改
22echo "系统名称已更改为 '$new_hostname'。请重启系统以应用更改。"
23
24# 提示用户是否现在重启
25read -p "是否现在重启系统?(y/n): " restart_choice
26
27if [ "$restart_choice" == "y" ]; then
28 sudo reboot
29else
30 echo "你可以随时通过运行 'sudo reboot' 命令来重启系统。"
31fi
这个脚本会做以下操作:
- 提示用户输入新的系统名称(主机名)。
- 检查是否输入了新的主机名,如果没有输入则退出脚本。
- 备份当前的
/etc/hostname
文件。 - 使用
sed
命令更新/etc/hostname
文件为新的主机名。 - 更新
/etc/hosts
文件中的主机名。 - 提示用户需要重启系统以应用更改。
- 提示用户是否立即重启,如果用户选择是,则执行
sudo reboot
命令进行重启。
要使用这个脚本,你需要将它保存为一个文件,例如 change_hostname.sh
,然后赋予其执行权限:
1chmod +x change_hostname.sh
最后,运行脚本:
1./change_hostname.sh