![如何为进程设置 DISPLAY 变量?](https://linux22.com/image/1103284/%E5%A6%82%E4%BD%95%E4%B8%BA%E8%BF%9B%E7%A8%8B%E8%AE%BE%E7%BD%AE%20DISPLAY%20%E5%8F%98%E9%87%8F%EF%BC%9F.png)
我尝试以用户 postgres 身份运行 pgadmin3 但出现以下错误:
No protocol specified
Error: Unable to initialize gtk, is DISPLAY set properly?
命令pgadmin3
在 pavel(我的主要用户帐户)下运行良好。
的答案对此有疑问建议使用一些服务器连接魔法(不是我的情况 - 我尝试在本地主机上运行它),或者设置 DISPLAY 变量。我在 pavel 和 postgres 下都通过 printenv 检查了它,两者都是 :0。我使用了找出哪些进程设置了 DISPLAY 变量的技巧在两个用户下。对于 pavel,有一个很长的列表,其中 DISPLAY 值为 :0(对于大多数进程,包括 pgadmin)或 :0.0(对于某些进程)。但对于 postgres,列表中只有三四个进程。
这就是我陷入困境的地方:如何设置环境变量(在本例中为 DISPLAY)一个过程?或者更好的是,对于应用程序/用户组合,这样进程从一开始就可以看到 DISPLAY 设置。我已经尝试在 ETC/ENVIRONMENT 中对 DISPLAY 进行硬编码,但没有任何变化 - 它会影响设置它的 DISPLAY 值(对于用户和进程),但不会影响用户运行的进程的可见性。
答案1
听起来你sudo
已经向postgres
用户尝试从那里运行 Pgadmin 了。
不要那样做。
以普通用户身份运行 PgAdmin,无需sudo
。您可能需要先在 DB 上创建一个用户帐户和/或编辑pg_hba.conf
以允许连接,但完成后您就可以使用 PgAdmin。