如何根据正在使用的目录更改PS1?

时间:2019-01-01 19:51:35

标签: bash if-statement windows-subsystem-for-linux ps1

我收到错误

-bash: test1.bash: line 5: syntax error near unexpected token `elif'
'bash: test1.bash: line 5: `elif [$PWD | grep /mnt/c/ !="" OR pwd | grep /mnt/d/ !=""] then

除了写的代码,我什么都没有尝试

if [$PWD | grep /mnt/c/ =="" OR pwd | grep /mnt/d/ =="" OR pwd | grep /mnt/usb/ ==""] then
    export PS1="$(tput setaf 47)bob$(tput setaf 14):$(tput setaf 47)linux$(tput setaf 14)>"

elif [$PWD | grep /mnt/c/ !="" OR pwd | grep /mnt/d/ !=""] then
    export PS1="$(tput setaf 47)bob$(tput setaf 14):$(tput setaf 47)windows$(tput setaf 14)>"

else then
    export PS1="$(tput setaf 47)bob$(tput setaf 14):$(tput setaf 47)unknows$(tput setaf 14)>"
if

如果我将驱动器安装在目录/mnt/c//mnt/d/中,例如,我希望将PS1更改为Windows,我希望更改PS1标签。

1 个答案:

答案 0 :(得分:3)

您似乎正在寻找:

# much more efficient to just run this once rather than every single time you're going to
# change colors.
colors=(
  [14]="$(tput setaf 14)"
  [47]="$(tput setaf 47)"
)

set_prompt() {
  case $PWD in
    /mnt/c/*|/mnt/d/*) os_space=windows ;;
    /mnt/usb/*)        os_space=unknown ;;
    *)                 os_space=linux ;;
  esac
  PS1="${colors[47]}bob${colors[14]}:${colors[47]}${os_space}${colors[14]}>"
}
PROMPT_COMMAND=set_prompt

[不是shell语法-它是 command ,也可以在名称test下使用。与其他任何命令一样,您需要在其名称和参数之间放置一个空格,并且只能使用指定该命令所期望的参数。运行[ foo | bar ]时,您仅传递了[的第一个实例foo,并将其stdout连接到单独的命令bar;这从来没有任何意义,因为test不会向stdout写入任何内容。