как изменить PS1 в зависимости от того, в каком каталоге я работаю? - PullRequest
0 голосов
/ 01 января 2019

Я получаю ошибки

-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

Я хочу, чтобы мой тег PS1 изменился, если я подключу диск, например, если яв каталоге /mnt/c/ или /mnt/d/ я хочу, чтобы PS1 изменился на windows

1 Ответ

0 голосов
/ 01 января 2019

Похоже, что вы ищете:

# 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

[ - это не синтаксис оболочки - это команда , также доступная под именем test.Как и для любой другой команды, вам нужно поместить пробел между ее именем и аргументами, и вы можете использовать только те аргументы, которые указана для этой команды.Когда вы запускаете [ foo | bar ], вы передаете первый экземпляр [ только одному аргументу foo и подключаете его стандартный вывод к отдельной команде bar;это никогда не имеет смысла, так как test ничего не записывает в stdout.

...