su
和 su -
是用于切换用户的命令,但它们在行为上有一些重要的区别。
su 命令
su
是 "switch user" 的缩写,用于切换到另一个用户的身份,但不改变环境变量。- 当您使用
su
命令切换到另一个用户时,环境变量(包括路径、用户目录等)并不会被修改。 - 举个例子,如果您从普通用户切换到另一个用户,您将会以目标用户的身份登录,但是当前的环境变量可能还是来源于原始用户,这可能会导致一些路径或设置的混淆。
su - 命令
su -
命令也被称作 "su -l"(dash ell)或 "su --login",它同样用于切换到另一个用户的身份,但是与简单的su
不同的是,它会启动一个完整的登录会话。- 使用
su -
命令登录后,会话会以目标用户的身份启动,并且包括了目标用户的环境变量和配置文件。 - 这意味着,通过
su -
切换用户后,您会进入一个完全新的Shell会话,就好像您以目标用户登录一样。
总结来说,su
命令主要用于快速切换用户,而 su -
命令用于完全以目标用户的身份启动一个新的Shell会话,包括环境变量和配置文件。