簡體   English   中英

如何讓我的 zsh 提示看起來像 sh/bash 以 $ 而不是 % 結尾?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM