在Linux命令行操作中,“切换”是高频操作,涵盖用户身份、工作目录、运行模式、Shell环境等多个维度,掌握这些切换方法能显著提升操作效率,以下是详细说明。

用户身份切换
Linux是多用户系统,不同用户拥有不同权限,切换用户是常见需求,主要有两种方式:su和sudo。
su命令:切换为其他用户(包括root)
su(substitute user)用于完全切换目标用户身份,需输入目标用户密码。
- 基础用法:
su - username # 切换到目标用户,并加载其环境变量(推荐带-参数)
示例:
su - test切换到用户test,输入test的密码后,当前Shell会完全切换为test的环境(家目录、PATH等均改变)。 - 参数说明:
- 或
-l:模拟登录Shell,加载目标用户的环境配置(如.bashrc),若省略则仅切换身份,不加载环境变量。 -c:执行命令后退出,不进入交互Shell。su - root -c "apt update"以root身份执行更新命令后退出。- 直接
su:默认切换为root,需输入root密码。
- 或
sudo命令:以其他用户身份执行命令
sudo(superuser do)允许普通用户以root(或其他用户)身份执行命令,需输入当前用户密码(而非root密码),且需在sudoers文件中配置权限(默认管理员用户在sudo组)。
- 基础用法:
sudo command # 以root身份执行command sudo -u username command # 以指定用户身份执行command
示例:
sudo apt install vim以root权限安装vim;sudo -u test ls /home/test以用户test身份查看其家目录。 - 参数说明:
-i:模拟root登录Shell,加载root环境变量,常用于需要完整root环境的场景(如sudo -i)。
-v:刷新sudo权限缓存(默认5分钟内无需重复输入密码)。
su与sudo对比
| 特性 | su |
sudo |
|---|---|---|
| 密码要求 | 需输入目标用户密码 | 需输入当前用户密码 |
| 权限范围 | 完全切换用户身份,持续有效 | 临时提升权限,单条命令有效 |
| 安全性 | 需共享root密码,风险较高 | 权限精细控制,无需共享密码 |
| 适用场景 | 长期需要目标用户权限时 | 短期执行特权命令时 |
工作目录切换
cd(change directory)是切换工作目录的核心命令,通过路径定位目标目录。

绝对路径与相对路径
- 绝对路径:从根目录开始的完整路径,如
/home/user/docs。 - 相对路径:从当前目录开始的路径,如
./docs(当前目录下的docs)、../parent(上级目录下的parent)。
cd常用语法
cd /path/to/directory # 切换到绝对路径 cd ../.. # 向上两级目录 cd ~ # 切换到当前用户家目录(如/home/user) cd - # 切换到上一次所在的目录(快速来回切换) cd ~username # 切换到指定用户的家目录(需权限)
示例:当前在/home/user/docs,执行cd ../..后切换到/home;执行cd -可返回/home/user/docs。
目录栈管理(pushd/popd)
当需要在多个目录间频繁切换时,可用目录栈暂存路径:
pushd /path:将目录压入栈顶并切换到该目录,栈内路径可通过dirs查看。popd:弹出栈顶目录并切换到下一个目录。
示例:pushd /home/user/docs # 压入并切换 pushd /var/log # 压入并切换,栈内顺序:/var/log /home/user/docs popd # 弹出/var/log,切换到/home/user/docs
运行模式切换
Linux主要运行模式包括图形界面(GUI)和命令行界面(CLI),可根据需求切换。
从图形界面切换到命令行(CLI)
- Ubuntu/Debian(使用systemd):
sudo systemctl set-default multi-user.target # 设置默认启动为CLI模式 sudo systemctl isolate multi-user.target # 立即切换到CLI模式(不重启)
- CentOS/RHEL(使用systemd):
sudo systemctl isolate multi-user.target # 立即切换到CLI模式
- 临时切换:在图形界面按
Ctrl+Alt+F1~F6(F7通常为图形界面),可进入不同的文本终端TTY。
从命令行切换到图形界面
- Ubuntu/Debian:
sudo systemctl set-default graphical.target # 设置默认启动为GUI模式 sudo systemctl isolate graphical.target # 立即切换到GUI模式
- CentOS/RHEL:
sudo systemctl isolate graphical.target # 立即切换到GUI模式
- 从TTY切换:按
Ctrl+Alt+F7(或F8,取决于发行版)返回图形界面。
Shell环境切换
Shell是Linux命令行的解释器,默认为bash,但可切换至zsh、fish等增强型Shell。
临时切换Shell
直接输入目标Shell名称即可进入新Shell,退出后恢复原Shell:
bash # 进入bash zsh # 进入zsh(需已安装) exit # 退出当前Shell,返回原Shell
永久切换默认Shell
- 查看当前Shell:
echo $SHELL(输出如/bin/bash)。 - 修改默认Shell:使用
chsh(change shell)命令:chsh -s /bin/zsh # 将默认Shell改为zsh(需输入当前用户密码)
修改后需重新登录生效,若需安装新Shell(如zsh),可先用
sudo apt install zsh(Ubuntu)或sudo yum install zsh(CentOS)安装。
虚拟终端切换
Linux支持多个虚拟终端(TTY),每个终端是独立的登录会话,适合多任务处理。
- 切换TTY:按
Ctrl+Alt+F1~Ctrl+Alt+F6(F1-F6为文本终端,F7通常为图形界面)。 - 查看当前TTY:
tty命令,输出如/dev/tty1。 - 在TTY间传递信息:使用
write命令,如write username tty2向用户username在TTY2的终端发送消息。
相关问答FAQs
Q1:忘记root密码怎么办?如何通过命令行切换到root权限重置?
A:可通过单用户模式重置root密码:
- 重启系统,在GRUB启动菜单按
e进入编辑模式; - 找到以
linux或linuxefi开头的行,在行尾添加init=/bin/bash(忽略ro只读参数); - 按
Ctrl+X启动,进入root Shell(无需密码); - 执行
mount -o rw,remount /重新挂载根目录为读写模式; - 用
passwd命令重置root密码,完成后执行exec /sbin/init重启系统。
Q2:使用cd切换目录时提示“No such file or directory”,可能的原因及解决方法?
A:常见原因及解决方案如下:
- 路径拼写错误:检查目录名大小写(Linux区分大小写)、特殊字符(如空格需用
转义或加引号); - 权限不足:若目标目录无访问权限,可用
sudo cd /path(但cd本身是内置命令,无法用sudo,需用sudo ls -ld /path确认权限,或通过su -切换到有权限的用户); - 软链接失效:若路径包含软链接,用
ls -l /path检查链接目标是否存在,或直接切换到实际路径; - 文件名含特殊字符:如
my dir,需用cd "my dir"或cd my dir处理。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/16902.html