Postgres不能看到我的PGDATA环境变量[英] Postgres cannot see my PGDATA environment variable

本文是小编为大家收集整理的关于Postgres不能看到我的PGDATA环境变量的处理方法,想解了Postgres不能看到我的PGDATA环境变量的问题怎么解决?Postgres不能看到我的PGDATA环境变量问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

任何人都可以解释一下:

~$ echo $PGDATA
/Library/PostgreSQL/9.2/data

~$ cd /Library/PostgreSQL/9.2/

/Library/PostgreSQL/9.2$ sudo su postgres

bash-3.2$ echo $PGDATA
<blank line>   

bash-3.2$ pg_ctl start
pg_ctl: no database directory specified and environment variable PGDATA unset
Try "pg_ctl --help" for more information.

bash-3.2$ export PGDATA="/Library/PostgreSQL/9.2/data"

bash-3.2$ pg_ctl start
server starting

bash-3.2$ 

以下内容在我的〜/.bashrc文件中:

export PGDATA="/Library/PostgreSQL/9.2/data"

我不会误解PGDATA中的路径:

                ~$ echo $PGDATA
                /Library/PostgreSQL/9.2/data
 export PGDATA="/Library/PostgreSQL/9.2/data"

推荐答案

sudo不能假定保留其呼叫者的环境变量. 有关您的特定操作系统的详细信息,请参见其manpage.

据我所知,环境变量已连接到外壳上,据我所知,我在同一外壳中.

这对我有用:

~$ cd /Library/PostgreSQL/9.2/
/Library/PostgreSQL/9.2$ sudo -E su postgres  

...

   -E          The -E (preserve environment) option will override the
               env_reset option in sudoers(5)).  It is only available when
               either the matching command has the SETENV tag or the
               setenv option is set in sudoers(5).

我只了解以下内容:

The -E (preserve environment) option

下一个评论:

当我向Postgres Su时,我会做su -postgres.注意连字符.

这是我的男人页面关于连字符的说法:

 -l      Simulate a full login.  The environment is discarded except for
         HOME, SHELL, PATH, TERM, and USER.  HOME and SHELL are modified
         as above.  USER is set to the target login.  PATH is set to
         ``/bin:/usr/bin''.  TERM is imported from your current environ-
         ment.  The invoked shell is the target login's, and su will
         change directory to the target login's home directory.

 -       (no letter) The same as -l.

我看不到如何保留PGDATA环境变量,这就是我尝试连字符时发生的事情:

/Library/PostgreSQL/9.2$ sudo su - postgres
Password:
7studs-computer:~ postgres$ ls
bin             pgAdmin3.app
data                pg_env.sh
doc             scripts
include             share
installer           stackbuilder.app
lib             uninstall-postgresql.app
7studs-computer:~ postgres$ pg_ctl start
-bash: pg_ctl: command not found
7studs-computer:~ postgres$ ls 
bin             pgAdmin3.app
data                pg_env.sh
doc             scripts
include             share
installer           stackbuilder.app
lib             uninstall-postgresql.app
7studs-computer:~ postgres$ cd bin
7studs-computer:bin postgres$ ls
clusterdb       pg_config       pgbench
createdb        pg_controldata      pltcl_delmod
createlang      pg_ctl          pltcl_listmod
createuser      pg_dump         pltcl_loadmod
dropdb          pg_dumpall      postgres
droplang        pg_receivexlog      postmaster
dropuser        pg_resetxlog        psql
ecpg            pg_restore      reindexdb
initdb          pg_standby      vacuumdb
oid2name        pg_test_fsync       vacuumlo
pg_archivecleanup   pg_test_timing
pg_basebackup       pg_upgrade
7studs-computer:bin postgres$ ./pg_ctl start
pg_ctl: no database directory specified and environment variable PGDATA unset
Try "pg_ctl --help" for more information.
7studs-computer:bin postgres$ 

所以连字符对我不起作用(OSX 10.6.8).

本文地址:https://www.itbaoku.cn/post/1763942.html