su oracle c 返回,su -c命令与环境变量的困惑
时间: 2024-02-11 11:06:30 浏览: 21
使用 su 命令切换到其他用户时,如果不加任何参数,则默认切换到 root 用户。而如果需要切换到其他用户,则需要在 su 命令后加上要切换的用户名。例如:
```
su oracle
```
这条命令会切换到 oracle 用户。
如果需要在切换用户时执行一条命令,则可以使用 -c 参数。例如:
```
su -c "ls -l" oracle
```
这条命令会切换到 oracle 用户,并执行 ls -l 命令。
关于环境变量,如果使用 su 命令切换到其他用户时不加 - 参数,则会保持原来用户的环境变量。而如果使用 su - 命令,则会切换到目标用户的环境变量。例如:
```
su oracle
```
这条命令会切换到 oracle 用户,但是环境变量还是当前用户的。
```
su - oracle
```
这条命令会切换到 oracle 用户,并且环境变量也会切换到 oracle 用户的。
相关问题
su - harmony 没有生效环境变量 必须要source一次才行
如果你在`harmony`用户的`.bashrc`或`.bash_profile`文件中设置了环境变量,并且使用`su - harmony`命令切换到`harmony`用户,但环境变量没有生效,那么可能是因为你没有在`.bashrc`或`.bash_profile`文件中添加以下代码:
```
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
```
这段代码的作用是判断当前用户是否存在`.bashrc`文件,如果存在,则加载该文件。这样,在使用`su - harmony`命令切换到`harmony`用户时,系统就会自动加载`harmony`用户的`.bashrc`文件了,从而使得环境变量可以生效。
如果你已经添加了上述代码,但环境变量仍然没有生效,那么可能是因为你的`.bashrc`文件中有语法错误或者其他问题。你可以使用`source ~/.bashrc`命令手动加载`.bashrc`文件,检查是否存在语法错误或其他问题。如果存在问题,你需要修改`.bashrc`文件并重新加载,直到环境变量可以正常生效为止。
sudo -i命令和sudo su
sudo -i命令和sudo su命令都是用于切换用户身份的命令,可以获取超级用户(root)权限。
sudo -i命令是在当前用户下以root用户身份登录,并且切换到root用户的环境变量和工作目录。使用sudo -i命令后,会要求输入当前用户的密码,验证通过后即可切换到root用户。
sudo su命令是以root用户身份登录,并且切换到root用户的环境变量和工作目录。使用sudo su命令后,会要求输入当前用户的密码,验证通过后即可切换到root用户。
这两个命令的作用相同,都可以获取root权限,但是sudo -i更推荐使用,因为它会保留当前用户的环境变量,可以避免一些权限问题。