大家可能都知道,bash可以打印最后一个命令退出代码。这对我有用,但我想通过添加一个if语句来改进它,该语句检查$?是否为0。如果是0,则用白色打印代码,如果不同,则以红色打印。不幸的是,这似乎行不通:
if [ $? == "0" ]; then
PS1=${PS1}'$(echo ${?})'
else
PS1=${PS1}'\e[1;31m\]$(echo ${?})'
fi
我也试过:
if [ $(echo $?) == "0" ]; then
PS1=${PS1}'
我刚刚在我的Windows7VM上安装了MSYS2,到目前为止我唯一真正做的就是通过添加几行代码来修改我的~/..bashrc文件。
我向文件中添加的惟一内容是几个别名cmds,这是一个导出cmd,我修改了PS1变量。见下文:
alias ll='ls -l'
alias la='ls -A'
alias cls='clear'
export PATH="$PATH:/home/Matt/bin"
PS1=$(print '\033]0;${PWD}\n\033[32m${USER}@${HOSTNAME}:\033[33
在Ubuntu上,使用Bash,我在登录时设置了/etc/profile和只读变量。下面是我的/etc/profile (我添加的内容在这个文件的底部):
# Check for interactive bash and that we haven't already been sourced.
[ -z "$BASH_VERSION" -o -z "$PS1" -o -n "$BASH_COMPLETION" ] && return
# Check for recent enough version of bash.
我想要做的是在PS1中调用一个函数来更新函数中的变量。然后,我喜欢使用该变量向PS1添加另一行。就像咆哮:
my_func(){
var="_RED_"
echo "hello in red"
}
PS1="\[\033]0;\w\007\]"
PS1+='$(my_func)'
if [ $var = "_RED_" ]; then # here I want to use that var
PS1+="\[$(tput setaf 124)\] red
我的办公室计算机和家用计算机都有完全相同来源的Git Bash for Windows (TortoiseGit附带的Git for Windows ),但是Git Bash的提示符在两台机器上都不同:
在办公室电脑上,我的/c/path (branch)都是绿色的(这是我想要的),
在家里的电脑上,我只有一条路(没有分支),而且都是白色的。
直到现在,我被告知,这是PS1变量,保存在~/.bashrc文件中。但是,在这两台机器上,都缺少这个文件(执行notepad ~/.bashrc会打开空记事本)。
我在这里迷路了。如果~/.bashrc不存在,那么Git从哪里“知道”它应
我尝试根据主机IP地址的条件在/etc/bash.bashrc中设置D1变量。但是,ps1变量跨tassks可用时,我遇到了问题。我不知道这是否是一个范围问题(就我从此链接中可以看出的情况而言),或者我是否真的应该有两本单独的剧本--基本上是在做相同的事情(一本用于局域网主机,一本用于WIFI主机)。当我运行这个剧本时,我得到:
The task includes an option with an undefined variable. The error: 'dict object' has no attribute 'stdout'\n\n
是否有一种方法