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

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

 PROMPT="`pwd` >" 

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

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

  • Можно ли использовать два символа (например, tm) в режиме вставки в zsh для привязки команды?
  • Как определить функцию, которая обрабатывает `command not found`?
  • Недопустимое присвоение zsh в функции канала
  • Zsh - Отключить вкладку вкладок
  • Могу ли я заставить zsh включить стек каталогов в завершение табуляции для тильды (~)?
  • Игнорировать файлы для завершения zsh для SVN
  • Выберите текст в терминале urxvt с помощью Shift + Arrow или Ctrl + Shift + Arrow
  • Правильное место для установки командной строки (PS1) при использовании sh / bash / zsh вместе
  • 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 - лучшая ОС в мире.