最近在 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 版權聲明:本文爲博主原創文章,轉載請附上博文連接!