为什么.bash_profile无法设置PS1变量?

为什么.bash_profile无法设置PS1变量?

我将 .bash_profile 设置为

 exec env -i HOME=$HOME TERM=vt100 PS1='\h' /bin/bash

但当我登录时,它还显示:

 lfs@sam:~$ env
 TERM=vt100
 PWD=/home/lfs
 PS1=${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 
 SHLVL=1
 HOME=/home/lfs
 _=/usr/bin/env
 lfs@sam:~$

发生了什么?

登录时如何设置PS1?

谢谢~

答案1

该值PS1由 bash 系统范围的配置文件设置/etc/bash.bashrc。您可以通过从您的~/.bashrc.

PS1是一个 shell 变量。它的含义取决于外壳。它通常不应该被导出,因为它不应该在进程的环境中,尽管如果您只使用一个 shell,您可以逃脱它。

请注意,bash 在配置文件方面相当古怪:如果您启动 bash 的登录实例,它只读取/etc/profile~/.bash_profile~/.profile如果没有~/.bash_profile.如果您启动非登录交互式实例,它将读取/etc/bash.bashrc(如果配置为这样做)和~/.bashrc。为了在 bash 的登录实例中获取交互设置,您应该将此代码放入您的~/.bash_profile

if [ -r ~/.profile ]; then
  . ~/.profile
fi
case $- in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac

shell 变量包含指示 shell 是交互式的$-字母。i

相关内容