2
我已經寫了下面的bash配置文件設置文件:Bash的配置文件設置不工作的路徑 - PS1
BLACK="\[\033[0;30m\]"
DARK_GRAY="\[\033[1;30m\]"
LIGHT_GRAY="\[\033[0;37m\]"
BLUE="\[\033[0;34m\]"
LIGHT_BLUE="\[\033[1;34m\]"
GREEN="\[\033[0;32m\]"
LIGHT_GREEN="\[\033[1;32m\]"
CYAN="\[\033[0;36m\]"
LIGHT_CYAN="\[\033[1;36m\]"
RED="\[\033[0;31m\]"
LIGHT_RED="\[\033[1;31m\]"
PURPLE="\[\033[0;35m\]"
LIGHT_PURPLE="\[\033[1;35m\]"
BROWN="\[\033[0;33m\]"
YELLOW="\[\033[1;33m\]"
WHITE="\[\033[1;37m\]"
DEFAULT_COLOR="\[\033[00m\]"
function prompt_command {
# How many characters of the $PWD should be kept
local pwd_length=23
if [ $(echo -n $PWD | wc -c | tr -d " ") -gt $pwd_length ]
then
newPWD="$(echo -n $PWD | sed -e "s/.*\(.\{$pwd_length\}\)/\1/")"
else
newPWD="$(echo -n $PWD)"
fi
}
PROMPT_COMMAND=prompt_command;
PS1="\`if [ \$? = 0 ];
then
echo -e '$PURPLE[\t] $LIGHT_CYAN\[email protected]\h$WHITE: $newPWD $GREEN$ $DEFAULT_COLOR';
else
echo -e '$PURPLE[\t] $LIGHT_CYAN\[email protected]\h$WHITE: $newPWD $RED$ $DEFAULT_COLOR';
fi; \`"
export PS1;
出於某種原因,獲得NEWPWD不工作。它存在於環境中(我可以用echo打印它),但它不會添加到命令行提示符中。總是添加一個空字符串。所以一個樣本輸出是:
[11:54:09] [email protected]: $
任何想法爲什麼不?
PS。這是我解決這個:
BLACK="\[\033[0;30m\]"
DARK_GRAY="\[\033[1;30m\]"
LIGHT_GRAY="\[\033[0;37m\]"
BLUE="\[\033[0;34m\]"
LIGHT_BLUE="\[\033[1;34m\]"
GREEN="\[\033[0;32m\]"
LIGHT_GREEN="\[\033[1;32m\]"
CYAN="\[\033[0;36m\]"
LIGHT_CYAN="\[\033[1;36m\]"
RED="\[\033[0;31m\]"
LIGHT_RED="\[\033[1;31m\]"
PURPLE="\[\033[0;35m\]"
LIGHT_PURPLE="\[\033[1;35m\]"
BROWN="\[\033[0;33m\]"
YELLOW="\[\033[1;33m\]"
WHITE="\[\033[1;37m\]"
DEFAULT_COLOR="\[\033[00m\]"
export MYPATHPS='$(
echo -n "${PWD/#$HOME/~}" |
awk -F "/" '"'"'{
if (length() > 14) {
if (NF>4) print "/" "/.../" $(NF-1) "/" $NF;
else if (NF>3) print "/" "/.../" $NF;
else print "/.../" $NF;
}
else print ;
}'"'"'
)';
PS1="$PURPLE[\t] $LIGHT_CYAN\[email protected]\h \` if [ \$? = 0 ]
then
echo -en '$GREEN'
else
echo -en '$RED'
fi;
\` $MYPATHPS $ $DEFAULT_COLOR ";
export PS1;
果然,它沒有出口。但是,在COMMAND_PROMPT或/和函數本身中導出仍然沒有解決問題。我想以某種方式設置PS1,以便每次運行命令時newPWD都會更新(通過prompt_command函數)。 – Yeti
已更新的答案顯示如何執行此操作。基本上改變'prompt_command'來輸出所需的提示,而不是設置一個變量。然後在'PS1'中使用'$(prompt_command)' – Sodved
那麼$沒有錯字,它在查詢結束時顯示$。除此之外,你是對的。同時設法弄清楚了。實際上,它的工作原理與我發佈的一樣,只需要將「newPWD」移動到PS1的''引號之外。 – Yeti