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

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

 PROMPT="`pwd` >" 

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

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

  • Что это за команда HOME?
  • Как удалить часть пути в интерактивной оболочке?
  • Почему urxvtc не активирует функции zsh при вызове с аргументом «-c»?
  • Как найти функцию zsh, связанную с виджетами zle?
  • Сценарий Shell / Bash: Правильно отказаться от привилегий
  • Функция Shell, чтобы проверить, есть ли приостановленный процесс, являющийся дочерним элементом этой оболочки?
  • Отображать возможные исправления, но не применять их автоматически
  • Escape filepath
  • 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 – хост, %~ – текущий каталог, а %# – индикатор суперпользователя.

    Interesting Posts

    Я изменил свой PATH, и теперь для каждой команды он возвращает команду «не найден»

    Установка Ubuntu: ] * ERROR * EDID имеет основную версию 0 вместо 1

    Просмотр stdout / stderr службы systemd

    Параметры stty изменяются с точки зрения патологии

    amd64 или i386? VirtualBox не может запустить клиентскую виртуальную машину

    Проверьте, существует ли команда в bash

    Аргумент командной строки сценария Bash для верхнего регистра

    Журналы EXT4 – проблема

    Несколько машин в одной сети с одинаковым IP-адресом

    Автозаполнение включает каталоги в c ++

    проверка статуса sendmail как пользователя NON root

    Реализация симметричной NAT с дополнительным портом источника? (программное обеспечение / ОС или аппаратный маршрутизатор)

    Mint 17 загружается на экран приветствия, но рабочий стол пуст

    Понимание и настройка различных методов ввода

    Компиляция винного приложения, как я могу ссылаться на windows.h

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