From 4285baa6e1b88c6ae1e96e3894828dc9063a380f Mon Sep 17 00:00:00 2001 From: Maurizio De Santis Date: Fri, 21 Mar 2014 17:48:35 +0100 Subject: [PATCH] Prompt sample: Debian chroot environment When you chroot in Debian, bash shows the chroot environment in the prompt: ```bash ... if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then debian_chroot=$(cat /etc/debian_chroot) fi PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' ... ``` This is the effect: ``` (chroot_env) user@host:~# ``` It is useful when chrooting, since usually the hostname remains the same and thus you can't distinguish where you are. --- .../sample_prompts/debian_chroot.fish | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 share/tools/web_config/sample_prompts/debian_chroot.fish diff --git a/share/tools/web_config/sample_prompts/debian_chroot.fish b/share/tools/web_config/sample_prompts/debian_chroot.fish new file mode 100644 index 000000000..d800c7441 --- /dev/null +++ b/share/tools/web_config/sample_prompts/debian_chroot.fish @@ -0,0 +1,55 @@ +# name: Debian chroot +# author: Maurizio De Santis + +function fish_prompt --description 'Write out the prompt, prepending the Debian chroot environment if present' + + # Just calculate these once, to save a few cycles when displaying the prompt + if not set -q __fish_prompt_hostname + set -g __fish_prompt_hostname (hostname|cut -d . -f 1) + end + + if not set -q __fish_prompt_normal + set -g __fish_prompt_normal (set_color normal) + end + + if not set -q __fish_prompt_chroot_env + set -g __fish_prompt_chroot_env (set_color yellow) + end + + # Set variable identifying the chroot you work in (used in the prompt below) + if begin; not set -q debian_chroot; and test -r /etc/debian_chroot; end + set debian_chroot (cat /etc/debian_chroot) + end + if begin; not set -q __fish_debian_chroot_prompt; and set -q debian_chroot; and test -n $debian_chroot; end + set -g __fish_debian_chroot_prompt "($debian_chroot)" + end + + # Prepend the chroot environment if present + if set -q __fish_debian_chroot_prompt + echo -n -s "$__fish_prompt_chroot_env" "$__fish_debian_chroot_prompt" "$__fish_prompt_normal" ' ' + end + + switch $USER + + case root + + if not set -q __fish_prompt_cwd + if set -q fish_color_cwd_root + set -g __fish_prompt_cwd (set_color $fish_color_cwd_root) + else + set -g __fish_prompt_cwd (set_color $fish_color_cwd) + end + end + + echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" '# ' + + case '*' + + if not set -q __fish_prompt_cwd + set -g __fish_prompt_cwd (set_color $fish_color_cwd) + end + + echo -n -s "$USER" @ "$__fish_prompt_hostname" ' ' "$__fish_prompt_cwd" (prompt_pwd) "$__fish_prompt_normal" '> ' + + end +end