pwd не задан правильно в запросе zsh

Если я .zshrc это в своем PROMPT в моем файле .zshrc :

 PROMPT="`pwd` >" 

Я ожидаю, что он напечатает текущий рабочий каталог. Однако pwd всегда печатает /Users/kevin . Почему он не показывает мой текущий рабочий каталог?

(Я знаю, что есть функция с именем %~ , которая установит ее для вас. Мне любопытно, почему это не работает, но это более простой пример чего-то более продвинутого, что я пытаюсь сделать).

  • Автозаполнение ZSH дает по-видимому случайные ошибки через некоторое время
  • zle reset-prompt предотвращает просмотр истории с помощью клавиш со стрелками
  • ZSH: вставить завершение на первой вкладке, даже если оно неоднозначно?
  • zsh: правила завершения для ssh
  • Command-not-found не запускается для «сбоя» в ZSH без причины
  • Исключение кавычек в псевдониме zsh
  • Как добавить dir в fpath
  • Как выполнить повторную команду k'th в конвейере?
  • 2 Solutions collect form web for “pwd не задан правильно в запросе zsh”

    Поскольку «pwd» оценивается сразу после установки переменной PROMPT. Попробуйте echo $PROMPT .

    например

     renan ~ % PROMPT="`pwd` >" /home/renan >echo $PROMPT /home/renan > 

    Как вы видите, «pwd» был заменен каталогом, в котором я был, когда я запускал команду PROMPT =.

    Проблема заключается в том, что обратные элементы не заменяются каждое магическое время, но только один раз, поэтому ваше приглашение настроено на любой pwd вы были. Чтобы каждый раз при вводе команды выполнять повторное выполнение, используйте function precmd() которая должна сбрасывать ваши $PROMPT . Например, это очень полезная функция, которая сбрасывает ваше приглашение в соответствии с текущим каталогом:

     function windows() { clear echo -e "Microsoft Windows 2000 [Version 5.00.2195]\n(c) Microsoft Corporation, 1985-2000.\n" function precmd() { PWD=$(pwd) PWD=${PWD/\/usr/\/Program Files} PWD=${PWD/\/home\/$(whoami)/\/Documents and Settings\\Administrator} PWD=${PWD/\/home/\/Documents and Settings} PWD=${PWD/\/sbin/\/Windows} export PS1="C:${PWD//\//\\}> " } } 

    … или просто используйте %~ в вашем PS1, например:

     PS1=' %n@%m: %~%# ' 

    где %n – пользователь, %m – хост, %~ – текущий каталог, а %# – индикатор суперпользователя.

    Linux и Unix - лучшая ОС в мире.