我想知道要编辑哪个文件才能在以.bash_profile
图形方式启动终端时启动我的文件。
我正在使用具有以下操作系统和默认 MATE 终端的 AWS 工作区。
$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
里面有很多文件~/etc
:
bashrc
profile
/profile.d
#lots of .sh
但在我的/home/<usr>
目录中有:
.bashrc
.bash_profile
^ 我创建了这个 bash_profile 文件,当我以图形方式启动终端并执行以下操作时,它可以工作$ source ~/.bash_profile
请求的编辑:
这就是我要放入的内容,.bash_profile
它在每一行上为命令提示符着色,并添加时间戳并提到我激活的 virtualenv。我希望它能
# in order to be able to change the color of venv prompt
#
function virtualenv_info(){
# Get Virtual Env
if [[ -n "$VIRTUAL_ENV" ]]; then
# Strip out the path and just leave the env name
venv="${VIRTUAL_ENV##*/}"
else
# In case you don't have one activated
venv=''
fi
[[ -n "$venv" ]] && echo "(pvenv:$venv) "
}
# disable the default virtualenv prompt change
export VIRTUAL_ENV_DISABLE_PROMPT=1
VENV="\$(virtualenv_info)";
#
git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/<b:\1>/'
}
# set the prompt color
# color starts with `\e[36m` and is closed with `\e[0m`
export PS1="\e[36m[\t] \e[38;5;203m${VENV}\e[38;5;78m\$(git_branch) \e[38;5;179m\w \e[0m☯ "
解决方法通过在默认 MATE 终端应用程序中选中此框。
答案1
不要为此使用配置文件。相反,请将您的更改添加到~/.bashrc
.这是最常用于此类事情的文件,您希望对打开的每个 shell 进行评估。
因此,只需删除您的修改~/.profile
并将其添加到~/.bashrc
即可。有关在什么情况下读取哪些文件的更多详细信息,请参阅我们的姊妹网站 Ask Ubuntu 上的答案:
答案2
这取决于您的图形环境(LXDM、XFCE、KDE 等)。其中一些没有来源~/.bash_profile
。
如果您有理由使用它(例如兼容性原因),您可以在您的系统中获取它~/.bashrc
(期望您将其用作bash
默认 shell)。
echo "source ~/.bash_profile" >> ~/.bashrc
这种方法有一些缺点。
- 它只能由交互式登录 shell 获取。
- 其他图形程序不会有相同的环境。
我建议使用适合您的设置的东西。
- 使用
/etc/profile
- 这是全球性的。
- 影响所有用户。
- 缺点:它可以更容易地被覆盖,因为它是很早就获得的(但在现实中从未经历过这种情况。但是一些桌面环境或类似的东西设置了自己独特的环境并覆盖了老的)。
检查桌面环境的行为。例如,LXDM 将获取以下内容(而不是
~/.bash_profile
):/etc/profile ~/.profile /etc/xprofile ~/.xprofile
参考:
- .bashrc、.bash_profile 和 .environment 之间有什么区别?
- @terdon 链接的很棒的上下文信息:/etc/profile.d 中的脚本被忽略?
编辑:
回应您的编辑:正如预期的那样,伴侣~/bash_profile
默认情况下不会来源。
关于设计决策的一些内容(因为您在最新评论中问过它)。通常,您只在您的等中设置环境变量~/.bash_profile
,/etc/profile
为什么我会考虑将您的脚本移动到其他位置而不是在~/.bashrc
.
你正在做的事情是非常特定于 shell 的。将其放入您的~/.bashrc
.
如果您使用的 shell 多于一个,则可以将其拆分为不同的文件。例如,定义VIRTUAL_ENV_DISABLE_PROMPT
内部环境文件,例如/etc/profile
,使用该函数创建一个新的 bash 脚本virtualenv_info()
,并且仅在需要的 shell 环境中获取该脚本。这将是一个干净的解决方案,但如果您仅将整个脚本放入您的~/.bashrc
.