从 0 到 1 实现 Linux 用户登录欢迎脚本
一、任务拆解:先搞懂每一步要做什么
先把需求拆成可执行的小目标,避免操作混乱:
- 创建专属用户:用
useradd新建以自己名字命名的用户,用passwd设置密码,完成用户基础配置 - 编写欢迎脚本:用 Shell 脚本整合系统信息,实现登录自动展示自定义欢迎语、系统版本、内存等核心信息
- 配置自动执行:修改用户的
.bash_profile文件,让脚本在用户登录时自动运行 - 赋予执行权限:用
chmod给脚本添加可执行权限,解决 “权限不足” 的常见报错 - 效果验证:切换用户登录,确认欢迎信息完整展示
二、分步实操:每一行代码都给你讲明白
步骤 1:创建新用户(root 权限操作)
首先用 root 身份登录服务器,执行以下命令创建用户(以示例用户LiShi为例,实际替换为自己的名字):
bash
运行
# 1. 新建用户LiShi
useradd LiShi
# 2. 为用户设置密码(执行后会提示输入两次密码,建议用复杂度足够的密码)
passwd LiShi
💡 小提示:如果需要给用户添加 sudo 权限,可以执行usermod -aG wheel LiShi(CentOS/RHEL)或usermod -aG sudo LiShi(Ubuntu/Debian),方便后续操作。
步骤 2:编写 welcome.sh 欢迎脚本
这是整个任务的核心,我们先看完整脚本,再逐行解析:
bash
运行
#!/bin/bash
# welcome.sh - Linux用户登录欢迎脚本
# 1. 自定义欢迎语(可根据需求修改)
echo "====================================="
echo " 欢迎登录系统 "
echo "====================================="
echo "欢迎语:你好,欢迎使用本系统!"
echo ""
# 2. 操作系统信息(uname -o)
echo "操作系统信息:$(uname -o)"
# 3. 内核版本信息(uname -r)
echo "内核版本信息:$(uname -r)"
# 4. 内核发行号(uname -v)
echo "内核发行号:$(uname -v)"
# 5. 系统硬件平台(uname -i)
echo "系统硬件平台:$(uname -i)"
echo ""
# 6. 系统当前用户(who命令)
echo "当前登录用户:"
who
echo ""
# 7. 系统内存使用情况(free -h,-h参数以人类可读格式展示)
echo "内存使用情况:"
free -h
echo "====================================="
脚本逐行解析:
#!/bin/bash:脚本声明,指定用 Bash 解释器执行,是 Shell 脚本的标准开头echo "内容":输出文本到终端,""包裹自定义内容,$(命令)是命令替换,会执行括号内的命令并把结果输出uname系列命令:uname -o:获取操作系统名称(如 GNU/Linux)uname -r:获取内核版本(如 3.10.0-1127.el7.x86_64)uname -v:获取内核发行号(编译时间等信息)uname -i:获取硬件平台(如 x86_64)
who:展示当前系统所有登录用户、登录时间、来源 IPfree -h:-h参数让内存大小以 GB/MB 为单位展示,比默认的 KB 更易读
脚本创建方法:
用vi或vim编辑器创建脚本(建议放在/usr/local/bin/或用户家目录,这里以/home/wcf/welcome.sh为例,对应图中用户wcf):
bash
运行
# 1. 进入用户家目录(以wcf用户为例)
cd /home/wcf/
# 2. 创建并编辑welcome.sh脚本
vi welcome.sh
按i进入编辑模式,粘贴上面的完整脚本,按Esc,输入:wq保存退出。
步骤 3:给脚本添加执行权限
脚本创建后默认没有执行权限,直接运行会报错Permission denied,执行以下命令赋予权限:
bash
运行
# 给所有用户添加执行权限(也可以用chmod 755,仅所有者可写,其他用户可读可执行)
chmod +x /home/wcf/welcome.sh
# 验证权限(执行后会看到-rwxr-xr-x,说明权限配置成功)
ls -l /home/wcf/welcome.sh
💡 权限说明:chmod +x是给脚本添加可执行权限,755对应rwxr-xr-x,是 Linux 脚本的标准权限配置,既保证所有者可修改,又不影响其他用户执行。
步骤 4:配置.bash_profile,实现登录自动执行
.bash_profile是 Bash shell 的用户登录配置文件,用户登录时会自动执行文件中的命令,我们只需要在文件末尾添加脚本路径即可:
bash
运行
# 编辑用户的.bash_profile文件(以wcf用户为例)
vi /home/wcf/.bash_profile
在文件最后一行添加脚本的绝对路径:
bash
运行
# 自动执行welcome.sh欢迎脚本
/home/wcf/welcome.sh
保存退出后,执行以下命令让配置立即生效(也可以重新登录生效):
bash
运行
source /home/wcf/.bash_profile
💡 避坑指南:
- 必须用绝对路径,不能用相对路径,否则登录时可能找不到脚本
- 如果是 CentOS 系统,部分版本默认没有
.bash_profile,可以手动创建,或修改.bashrc文件(效果一致) - 注意文件权限,确保用户对
.bash_profile有读权限,否则配置不生效
步骤 5:效果验证:切换用户登录
执行su命令切换到新建用户,验证欢迎信息:
bash
运行
# 切换到wcf用户(替换为自己的用户名)
su - wcf
正常情况下,会自动输出完整的欢迎信息,包含:
- 自定义欢迎语
- 操作系统、内核版本、硬件平台等系统信息
- 当前登录用户列表
- 内存使用情况(总内存、已用、空闲等)
三、图中案例解析:新手常见问题与优化
从图中用户的操作来看,整体流程是正确的,但有几个可以优化的细节:
1. 脚本优化点
- 图中脚本用了
$(uname -o)等命令替换,语法正确,但可以添加-h参数让free命令输出更易读(图中用了free -h,符合要求) - 欢迎语的分隔线可以更美观,比如用
echo "====================================="统一格式,提升视觉效果 - 可以添加系统时间、主机名等信息,让欢迎内容更丰富,比如添加
echo "当前系统时间:$(date)"
2. 操作中的小问题
- 图中执行
chmod命令时,路径书写略有笔误(chmod/home/x应为chmod +x),实际操作中要注意空格,正确命令是chmod +x /home/wcf/welcome.sh - 编辑
.bash_profile时,要确保文件末尾添加的是绝对路径,避免登录时脚本无法执行 - 切换用户时要用
su - 用户名(带-),会完全加载用户的环境变量,确保.bash_profile生效,而不是su 用户名
3. 常见报错与解决方案
表格
| 报错现象 | 原因 | 解决方案 |
|---|---|---|
| 登录时无欢迎信息 | 1. 脚本无执行权限;2. .bash_profile 路径错误;3. 用了相对路径 | 1. 执行chmod +x 脚本路径;2. 检查.bash_profile 中的绝对路径;3. 替换为绝对路径 |
脚本执行报错command not found |
1. 命令拼写错误;2. 脚本开头未加#!/bin/bash |
1. 检查uname、free等命令拼写;2. 脚本第一行添加#!/bin/bash |
| 切换用户后无欢迎信息 | 未用su -,未加载用户环境变量 |
用su - 用户名切换,完全加载用户配置 |
| 内存信息显示为 KB,不易读 | 未加-h参数 |
将free改为free -h |
四、进阶拓展:让欢迎脚本更实用
完成基础任务后,我们可以给脚本添加更多实用功能,让它成为运维小工具:
1. 添加系统负载、磁盘使用情况
bash
运行
# 系统负载(1分钟、5分钟、15分钟负载)
echo "系统负载情况:"
uptime
echo ""
# 磁盘使用情况
echo "磁盘使用情况:"
df -h
2. 添加登录 IP、登录时间
bash
运行
# 获取登录IP(从who命令中提取)
echo "登录IP:$(who am i | awk '{print $NF}' | sed 's/[()]//g')"
# 当前登录时间
echo "登录时间:$(date "+%Y-%m-%d %H:%M:%S")"
3. 给所有用户添加欢迎脚本
如果需要给系统所有用户添加欢迎脚本,可以修改全局配置文件/etc/profile,在文件末尾添加脚本路径,这样所有用户登录时都会执行脚本。
五、总结:从这个任务学到的 Linux 核心知识
这个看似简单的小任务,其实覆盖了 Linux 运维的多个核心知识点:
- 用户管理:
useradd、passwd命令,理解 Linux 用户与权限的基础 - Shell 脚本基础:命令替换、
echo输出、脚本声明,入门 Shell 编程 - 环境变量配置:
.bash_profile的作用,理解用户登录时的环境加载流程 - 权限管理:
chmod命令,掌握 Linux 文件权限的核心逻辑 - 系统信息查询:
uname、who、free等常用系统命令,快速获取系统状态
对于 Linux 新手来说,这个任务是从 “会敲命令” 到 “理解系统” 的关键一步,不仅能完成作业要求,更能为后续的运维工作打下坚实基础。
六、完整操作命令汇总
# 1. 创建用户(替换LiShi为自己的名字)
useradd LiShi
passwd LiShi
# 2. 创建welcome.sh脚本
vi /home/LiShi/welcome.sh
# 粘贴完整脚本内容,保存退出
# 3. 赋予执行权限
chmod +x /home/LiShi/welcome.sh
# 4. 配置.bash_profile
vi /home/LiShi/.bash_profile
# 末尾添加 /home/LiShi/welcome.sh,保存退出
# 5. 生效配置
source /home/LiShi/.bash_profile
# 6. 验证效果
su - LiShi
更多推荐


所有评论(0)