linux中如何用cd切换用户
- Linux
- 2025-08-04
- 7
su [用户名]
或
sudo -u [用户名] [命令]
切换用户,前者需输入目标用户密码,后者需当前用户有sudo权限并输入其密码
Linux系统中,cd
命令的核心功能是切换当前工作目录,而非直接用于切换用户身份,通过结合特定语法和路径规则,可以间接实现“跳转到其他用户的目录”的效果,以下是详细说明及操作方法:
使用 cd
切换至其他用户的主目录
-
通过用户名缩写(带波浪号 )
输入形如cd ~username
的命令(将username
替换为目标用户的用户名),即可快速定位到该用户的个人主目录。cd ~john # 切换到用户 john 的主目录(通常位于 /home/john)
此方法利用了Linux对 的特殊解析规则——默认扩展为
/home/用户名
,若目标用户的家目录不在标准位置(如自定义路径),则需改用绝对路径方式。 -
指定绝对路径
直接使用完整的文件系统路径访问任意用户的目录结构,典型场景包括:cd /home/alice # 进入 alice 用户的主目录 cd /root # 切换到超级用户的专属目录(需具备相应权限)
这种方式不依赖用户配置,适用于所有符合POSIX标准的Linux发行版。
-
相对路径导航
当已知当前所在位置与目标的位置关系时,可采用相对路径高效移动,比如从/home
层级开始:cd ../bob # 若当前在 /home/parent_dir,则转入同级下的 bob 用户目录
配合其他命令实现完整交互式切换
若不仅需要改变目录,还希望以特定用户身份执行后续操作,应组合以下工具:
| 命令 | 作用描述 | 示例 | 注意事项 |
|————–|————————————————————————–|—————————————|——————————|
| su user
| 完全切换至指定用户的登录会话(含环境变量、Shell配置等) | su lily
→ 输入密码后获得其终端 | 需要知道目标用户的密码 |
| sudo -iu user
| 以目标用户的身份启动一个交互式Shell会话 | sudo -iu mike
| 当前用户必须有sudo授权 |
| sudo -u user command
| 单次以某用户权限运行某个可执行程序或脚本 | sudo -u admin ls /etc
| 仅临时赋予该命令相关权限 |
️ 关键区别:
cd
只修改当前终端的工作目录;而su
/sudo
会创建新的进程上下文,彻底接管用户环境。
特殊符号与快捷操作技巧
以下是提升效率的实用技巧汇总:
- 返回上级目录:
cd ..
(逐级向上)或cd ../..
(多级跳跃)。 - 回到前一个目录:
cd -
(利用Shell自动保存的OLDPWD
变量)。 - 直达根目录:
cd /
。 - 自动补全支持:输入部分路径后按
Tab
键,系统将尝试猜测完整名称(如输cd d
+ Tab可能补全为cd documents
)。 - 环境变量引用:
cd $HOME
等同于cd ~
,均指向当前登录用户的主文件夹。
常见错误及解决方案对照表
现象 | 可能原因 | 修复建议 |
---|---|---|
cd: No such file or directory |
路径拼写错误或目录不存在 | 检查大小写、空格等细节,试用 ls 确认结构 |
“Permission denied” | 无权访问目标目录 | 使用 sudo cd path (无效!因cd是内置命令),应改用 sudo ls 查看权限后再调整策略 |
切换后未感知变化 | 并行进程间的环境隔离 | 确保在正确的终端窗口中操作,可用 pwd 验证实际位置 |
软链接循环导致无限递归 | 错误配置的象征链接形成闭环 | 添加 -P 参数强制解析物理路径:cd -P link_name |
相关问答FAQs
Q1: 为什么直接运行 sudo cd
会报错?
A: 因为 cd
是一个Shell内置命令,不属于独立的可执行文件。sudo
只能修饰外部程序(如 sudo ls
),无法直接增强内置命令的权限,正确做法是通过 sudo su user
启动新会话来获取高权限用户的完整环境。
Q2: 如何快速在多个常用目录间切换?
A: 除手动输入外,还可利用两种自动化策略:
- 别名设置:在
~/.bashrc
中添加类似alias proj='cd /path/to/project'
的规则,重载配置后直接使用proj
代替长路径; - 目录栈管理:先用
pushd /target/path
压入地址栈,再用popd
按序弹出并跳转,特别适合频繁往返