centos 切换用户显示bash-4.2$,不显示用户名路径的问题

最近在 CentOS 7.2 上安装 PostgreSQL,PostgreSQL 安装完成以后默认会建立一个名称为”postgres“的管理帐号,可是使用如下命令切换用户linux

sudo su - postgres
的时候却显示:sql

-bash-4.2$
出现 shell 显示-bash-4.2$不显示用户名路径的问题。
这是由于 PostgreSQL 安装时建立的 postgres 用户的配置文件缺乏如下内容:shell

export PS1='[\u@\h \w]'
解决方法:
须要注意的是:切换用户后显示 -bash-4.2$  其实用户切换已经成功了,只是显示的内容不符合预期;我开始觉得是出错了,根本没办法操做。有点傻了。bash

就在 -bash-4.2$ 状态下编辑配置文件:tcp

vi ~/.bash_profile
在文件末尾追加:
export PS1='[\u@\h \w]'
执行如下指令,使更改生效:post

source ~/.bash_profile
执行以后马上就能够看到你想要的内容了:.net


PS1是什么?
linux下环境变量PS1简单来讲就是设置命令提示符显示的内容。blog

如上面显示的 -bash-4.2$,以及咱们但愿看到的显示用户名路径信息。test

PS1变量中提示符各项含义:
\d :表明日期,格式为weekday month date,例如:Wed Dec 12
\H :完整的主机名称。例如:hostname是debian.linux
\h :仅取主机的第一个名字,如上例,则为debian,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的帐号名称 如:root
\v :BASH的版本信息 如:3.2
\w :完整的工做目录名称。家目录会以 ~代替 如显示/etc/default/
\W :利用basename取得工做目录名称,因此只会列出最后一个目录 如上例则只显示default
\# :下达的第几个命令
\$ :提示字符,若是是root时,提示符为:# ,普通用户则为:$
另外
看到其它的解决方法是将 /etc/skel/ 下的文件都复制到出问题的这个用户的用户目录下,但我开始尝试的都不生效,包括:变量


sudo cp -a /etc/skel/. /home/postgres
cp -a /root/. /home/postgres/
sudo cp -a /etc/skel/. /var/postgres
这里有两个问题须要注意:
一、用户是否缺乏配置文件”.bash_profile“

若是真的缺乏,复制过来还能够,否则的话把以前已经存在的覆盖了,可能致使更严重的问题。
二、用户的目录是什么?

每一个用户的目录是不一样的;

这个能够经过如下命令查看:

[aven@localhost ~]cat /etc/passwdroot:x:0:0:root:/root:/bin/bashpostfix:x:89:89::/var/spool/postfix:/sbin/nologintcpdump:x:72:72::/:/sbin/nologinaven:x:1000:1000:avenLinux:/home/aven:/bin/bashpostgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash这里只显示了部分输出;咱们能够看出每一个用户的用户目录是彻底不一样的;因此若是用户是否缺乏配置文件”.bash_profile“,也须要将文件复制对该用户对应的用户目录才能够,并且复制过去以后,仍是须要使用”source ~/.bash_profile“命令使其生效的!--------------------- 做者:微wx笑 来源:CSDN 原文:https://blog.csdn.net/testcs_dn/article/details/70482468 版权声明:本文为博主原创文章,转载请附上博文连接!

相关文章
相关标签/搜索