我觉得这应该是直截了当的,但我从未见过有人问过我能说出来的问题。情况非常简单。每当我成为用户时,即su user
它总是在 /root 目录而不是主目录中启动。让我演示给你看。
[root@st-test2 ~]# grep "postgres" /etc/passwd
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql/:/bin/bash
[root@st-test2 ~]# su postgres
bash-4.2$ pwd
/root
[root@st-test2 ~]# ls -lhart /var/lib |grep postgres
drwx------. 4 postgres postgres 86 May 5 16:07 pgsql
Run Code Online (Sandbox Code Playgroud)
因此,您可以看到 postgres 用户的主目录存在并且其设置在 /etc/passwd 中...但出于某种原因,它们从根目录开始。我创建的每个用户都会发生这种情况,我不知道为什么。我也不能说我以前见过这种情况。
Ste*_*itt 35
如果您只提供用户名作为参数,则su
更改用户而不更改其他内容:
为了向后兼容,
su
默认不更改当前目录,只设置环境变量HOME
和SHELL
(如果目标用户不是 rootUSER
,LOGNAME
则加上)。
所以su postgres
留在同一个目录中。不过既然HOME
设置为新用户的主目录,cd
就会带你到正确的地方。
要登录并从用户的默认目录启动,您需要要求su
启动适当设置的登录 shell:
su -l postgres
Run Code Online (Sandbox Code Playgroud)
或其共同的同义词,
su - postgres
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2181 次 |
最近记录: |