[英]How do I make my zsh prompt look like sh/bash end with $ instead of %?
任何人都可以展示如何修改以下 zsh 提示環境變量賦值,使其發出的字符串以$
(后跟一個空格)結尾,而不是%
?
export PROMPT='%F{111}%m:%F{2}%~ %#%f '
macOS Catalina 將默認 shell 改為 zsh,看到一篇文章鼓勵切換。 我假設向后兼容,但提示邏輯改變了。
export PROMPT='%F{111}%m:%F{2}%~ $%f '
有關 zsh 提示字符串自定義的更多選項 - http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Login-information
%(!.#.$)
生成%
提示字符串部分是%#
- 如果 shell 是特權(root)shell,則生成#
否則生成%
。
如果您仍然想要那種一般行為,只需使用$
而不是%
,您可以使用%(!.#.$)
代替%#
。 這是一個條件,包含三個部分(每個部分以.
分隔): !
檢查 shell 是否有特權,如果檢查結果為真, #
是擴展值,如果為假,則$
是擴展值。
演示會話(在 shell 中,啟動提示僅為%
( PROMPT='%% '
)):
% PROMPT=': %#; ' ;: # the default %# (unwanted %, just to show it)
: %; sudo -s ;: # prompt is % now -- until we switch to root
: #; exit ;: # prompt is # now -- exit to return to user
: %; PROMPT=': %(!.#.$); ' ;: # set new prompt string with conditional for #/$
: $; sudo -s ;: # prompt is $ now -- what we wanted
: #; exit ;: # prompt is # for root shells, still
: $; ;: # back to user shell, prompt back to $
將其折疊到您之前的設置中,我們有:
export PROMPT='%F{111}%m:%F{2}%~ %(!.#.$)%f '
應該做的伎倆!
(作為一個隨機的旁注,我正在使用;
和內置的:
命令來影響可能不允許的注釋——特別是,將提示本身視為注釋,因此可以復制/粘貼以及重新運行命令的命令——代價是你粘貼它的 shell 中的一些噪音。此外,上面的例子假設 sudo 最近已經運行足夠多,和/或以其他方式配置,不需要密碼——當然,如果是這樣,這一切仍然有效,只是在示例中會產生額外的噪音。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.