
私はこれが簡単なはずだと思いますが、誰かがこのような質問をするのを見たことがありません。状況はとても簡単です。ユーザーになるたびに、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
したがって、postgresユーザーのホームディレクトリが存在し、/etc/passwdに設定されていることがわかりますが、何らかの理由でルートから始まります。これは私が作成するすべてのユーザーに起こりますが、その理由はわかりません。私も前にこのようなことが起こったことを見たことがないとは言えません。
答え1
ユーザー名のみを引数として指定する場合は、su
ユーザーを変更してください。あまり変更しないで:
以前のバージョンとの互換性のために、デフォルトでは
su
現在のディレクトリは変更されず、環境変数HOME
とのみ設定されますSHELL
(ターゲットユーザーがrootでない場合とUSER
追加)。LOGNAME
したがって、su postgres
同じディレクトリに滞在してください。しかし、HOME
新しいユーザーのホームディレクトリに設定されているので、cd
〜するあなたを正しい場所に連れて行ってください。
ユーザーのプライマリディレクトリにログインして実行するには、su
適切に設定されたログインシェルの実行を要求する必要があります。
su -l postgres
またはその共通の同義語、
su - postgres
答え2
su
Busterの後、Debianの行動が変わったため、雇用主がこれを変更した可能性があります。新人バスター私も作成しましたalias su='su -'