当前位置: 技术问答>linux和unix
为什么有的用户登录后shell提示符是如此模样?
来源: 互联网 发布时间:2016-07-04
本文导语: 我用账号postgres登录: 提示符都是这样: -bash-3.2$ 而用root以及其他则为: [root@localhost ~]# 查看/etc/passwd中这两个账号分别使用的shell: root:x:0:0:root:/root:/bin/bash postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash 如...
我用账号postgres登录:
提示符都是这样:
而用root以及其他则为:
查看/etc/passwd中这两个账号分别使用的shell:
如上所示,都为bash,什么导致了这样的区别呢?
提示符都是这样:
-bash-3.2$
而用root以及其他则为:
[root@localhost ~]#
查看/etc/passwd中这两个账号分别使用的shell:
root:x:0:0:root:/root:/bin/bash
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
如上所示,都为bash,什么导致了这样的区别呢?
|
用户登录后加载profile和bashrc的流程如下:
1)/etc/profile-------->/etc/profile.d/*.sh
2)$HOME/.bash_profile-------->$HOME/.bashrc---------->/etc/bashrc
说明:
bash首先执行/etc/profile脚本,/etc/profile脚本先依次执行/etc/profile.d/*.sh
随后bash会执行用户主目录下的.bash_profile脚本,.bash_profile脚本会执行用户主目录下的.bashrc脚本,
而.bashrc脚本会执行/etc/bashrc脚本
至此,所有的环境变量和初始化设定都已经加载完成.
bash随后调用terminfo和inputrc,完成终端属性和键盘映射的设定.
1)/etc/profile-------->/etc/profile.d/*.sh
2)$HOME/.bash_profile-------->$HOME/.bashrc---------->/etc/bashrc
说明:
bash首先执行/etc/profile脚本,/etc/profile脚本先依次执行/etc/profile.d/*.sh
随后bash会执行用户主目录下的.bash_profile脚本,.bash_profile脚本会执行用户主目录下的.bashrc脚本,
而.bashrc脚本会执行/etc/bashrc脚本
至此,所有的环境变量和初始化设定都已经加载完成.
bash随后调用terminfo和inputrc,完成终端属性和键盘映射的设定.
|
看下postgres的home目录下的.bashrc
有没有设置ps1的功能
有没有设置ps1的功能
|
You can edit your .bashrc. My PS1 definition in .bashrc is as following:
if [ "$color_prompt" = yes ]; then
# PS1='${debian_chroot:+($debian_chroot)}[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$ '
PS1='[33[01;34m]w[33[00m]$ '
else
# PS1='${debian_chroot:+($debian_chroot)}u@h:w$ '
PS1='w$ '
fi
|
登录情况下,shell一般会读取HOME目录下的.bash_profile;
非登录情况下,比如打开gnome-terminal或者emacs下打开shell,则执行.bashrc,而不会执行.bash_profile.
一般,.bash_profile会去检查.bashrc并执行,这只是一种习惯性约定。所以关于bash的定制卸载.bashrc是比较好的习惯。