Pages : 1
#1 Le 28/05/2012, à 17:31
- Saveman
Prompt selon privilèges
Bonjour à tous,
Je débute un peu niveau bash rc, et il y a un truc qui me tient à coeur depuis pas mal de temps : c'est tout simple en fait. J'aimerais que mon prompt soit sous la forme :
save@savework:~$
root@savework:/#
Donc avec la couleur de l'user qui change en fonction de son rang.
Merci pour l'aide !
OS : Ubuntu 12.04 64bits PONIES WILL DOMINATE
CG : ATI Radeon Mobility HD 4250
CPU : AMD 2.1 GHz Dualcore
RAM : 4GO DDR3
Hors ligne
#2 Le 28/05/2012, à 18:36
- demonipuch
Re : Prompt selon privilèges
Bonjour
save@savework:~$
Dans le fichier .bashrc de votre utilisateur :
PS1='${debian_chroot:+($debian_chroot)}\[\033[1;32m\]\u\[\033[0;m\]@\[\033[1;34m\]\h\[\033[0;m\]:\w \$ '
Dans le .bashrc de root :
root@savework#
PS1='${debian_chroot:+($debian_chroot)}\[\033[1;31m\]\u\[\033[0;m\]@\[\033[1;34m\]\h\[\033[0;m\]:\w \$ '
Hors ligne
#3 Le 28/05/2012, à 18:41
- Bousky
Re : Prompt selon privilèges
# Change le titre de la fenêtre (user@host: pwd)
PS1="\[\e]0;\u@\h: \w\a\]"
# Choix de la couleur de l'utilisateur
# uid = 0 (root) -> rouge
# uid < 1000 (utilisateur système) -> orange
# uid ≥ 1000 (utilisateur humain) -> vert
PS1="$PS1"'\[\e[0;$(
if [ `id -u` -eq 0 ] ; then
echo 31
elif [ `id -u` -ge 1000 ] ; then
echo 32
else
echo 33
fi)m\]'
# Fin du prompt
PS1="$PS1\u\[\e[0m\]@\[\e[36m\]\h\[\e[0m\]:\w\\$ "
Sur mon PC, j'ai un fichier /etc/mon_prompt :
function mon_prompt {
PS1=...
}
J'ai commenté tout ce qui se rapporte au prompt dans les différents bashrc et j'ai mis à la fin de /etc/bash.bashrc :
. /etc/mon_prompt
mon_prompt
@demonipuch : selon comment on devient root (« su » vs. « su - », « sudo -i » vs. « sudo -s »), le bashrc n'est pas toujours lu…
PS : mon prompt en en réalité défini comme ça :
function bsk_prompt {
case "$1" in
1|2|3) ;;
*) return 1 ;;
esac
# définition des couleurs
local usr_root="\[\e[1;31m\]" # utilisateur root (uid = 0)
local usr_sys="\[\e[1;33m\]" # utilisateurs système (uid < 1000)
local usr_std="\[\e[1;32m\]" # utilisateurs standards (uid >= 1000)
local host="\[\e[1;35m\]" # hostname
local pwd="\[\e[1;36m\]" # répertoire
local pwd_clear="\[\e[1;34m\]" # répertoire (meilleure visibilité sur fond clair)
local prompt="\[\e[31m\]" # PS2 et fin de PS1 multi-ligne
local null="\[\e[0m\]" # réinitialisation des attributs graphiques
local return="\E[1;31m⏎\e[0m" # retour à la ligne avant le prompt
local bw
case "$2" in
clear) pwd="$pwd_clear" ;;
bw) bw="1" ;;
"") ;;
*) return 1 ;;
esac
[ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null || bw=1
if [ "$bw" ] ; then
usr_root=
usr_sys=
usr_std=
host=
pwd=
prompt=
null=
return="⏎"
fi
# retour à la ligne si la dernière commande ne l'a pas fait
PROMPT_COMMAND='echo -en "\E[6n";read -sdR PRMPTCURPOS;[ ${PRMPTCURPOS#*;} -eq 1 ]||echo -e "'$return'";unset PRMPTCURPOS'
# rectangle de couleur en fonction de la valeur d'erreur de la dernière commande
if [ "$bw" ] ; then
PS1=
else
PS1='\[\e[0;$(
case $? in
0 |130|147|148) echo "42" ;;
137|143 ) echo "44" ;;
* )
if [ $? -ge 126 ] ; then
echo "41"
else
echo "43"
fi
esac
)m\] \[\e[0m\] '
fi
# ligne du dossier pour un prompt à trois lignes
case "$1" in
1|2) ;;
3) PS1="${PS1}${pwd}\w${null}:\n${prompt}|${null} " ;;
esac
# choix de la couleur de l'utilisateur
if [ `id -u` -eq 0 ] ; then
PS1="${PS1}${usr_root}"
elif [ `id -u` -lt 1000 ] ; then
PS1="${PS1}${usr_sys}"
else
PS1="${PS1}${usr_std}"
fi
# user@host
PS1="${PS1}\u${null}@${host}\h${null}"
# dossier pour un prompt à une ou deux lignes
case "$1" in
1|2) PS1="${PS1}:${pwd}\w${null}\$" ;;
3) PS1="${PS1}\$";;
esac
case "$1" in
1) PS1="${PS1} " ;;
2|3) PS1="${PS1}\n${prompt}|${null} " ;;
esac
# PS2
case "$1" in
1) PS2="${prompt}>${null} " ;;
2|3) PS2="${prompt}|${null} " ;;
esac
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1" ;;
*)
esac
}
Dernière modification par Bousky (Le 28/05/2012, à 18:52)
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne
#4 Le 28/05/2012, à 20:58
- Saveman
Re : Prompt selon privilèges
Hey hey, voilà mon rendu final
Ce que j'ai rajouté dans mon /etc/bash.bashrc :
PS1="$PS1"'\[\e[1;$(
if [ `id -u` -eq 0 ] ; then
echo "31"
elif [ `id -u` -ge 1000 ] ; then
echo "32"
else
echo "33"
fi)m\]'
PS1="$PS1\u@\h\[\e[1;34m\] \w \$ \[\e[0m\]"
(Ouais, ça fait linuxmint pour ceux qui connaissent, mais c'est ce que je recherchais !)
PS : Par contre, les couleurs du root ne marchent qu'avec sudo -s, et pas sudo -i, mais de toute façon, j'utilisait que le premier. A savoir !
Merci à vous deux
Dernière modification par Saveman (Le 28/05/2012, à 21:01)
OS : Ubuntu 12.04 64bits PONIES WILL DOMINATE
CG : ATI Radeon Mobility HD 4250
CPU : AMD 2.1 GHz Dualcore
RAM : 4GO DDR3
Hors ligne
#5 Le 28/05/2012, à 21:22
- Bousky
Re : Prompt selon privilèges
Sympa ton fond d'écran
Ponies gona pwn!
Dernière modification par Bousky (Le 28/05/2012, à 21:23)
Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)
Hors ligne