Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 26/05/2021, à 09:40

christophe_D

Bash complétion ROOT

Bonjour,

Après changement de portable et donc installation nouvelle de kubuntu 21.04 propre, j'ai vérifier que bash-completion est bien installer, en mode user classique en mode console j'ai bien la coloration syntaxique, et l'auto complétion avec ALT+TAB pour apt-get install xxxx.

Mais en passant en root, plus rien. Après plusieurs recherche il s'agit de modifier le /root/.bashrc.
Bien sur maintenant depuis je ne sais plus quelle version exactement on ne peu plus utiliser Kate en root. Malgré plusieurs test vue sur le net, j'ai préféré installer gedit Mais la manip n'a rien de modification du /root/.bashrc

Du coup, j'ai simplement fait

sudo cp ~/.bashrc /root/

Du coup, coloration syntaxtique + complétion sous root pour apt-get par exemple

Si ça peut aider wink
*** edit ***
Erreur d'écriture ALT et non ALT+TAB

Dernière modification par christophe_D (Le 26/05/2021, à 11:30)


Ubuntu 21.10

Hors ligne

#2 Le 26/05/2021, à 10:10

Vobul

Re : Bash complétion ROOT

Salut Christophe,

Je t'invite à te familiariser avec un éditeur de texte non graphique, tel que nano, vim ou emacs (grosse préférence pour vim perso). Ça te simplifiera la vie wink

Aussi, je trouve que l'auto-complétion de zsh est bien supérieure à bash, à essayer également (peut-être avec oh-my-zsh). Regarde aussi "fish", c'est sympa comme shell.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#3 Le 26/05/2021, à 11:23

MicP

Re : Bash complétion ROOT

Bonjour

Avec la commande cp tu aurais pu utiliser l'option b
qui permet d'automatiquement renommer un fichier qui risquerait d'être "écrasé" par la copie.

De cette façon, tu aurais gardé une copie de sauvegarde du fichier original /root/.bashrc
qui aurait automatiquement été renommée /root/.bashrc~

Si besoin, tu trouveras ci-dessous le contenu du fichier original /root/.bashrc

# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

# don't put duplicate lines in the history. See bash(1) for more options
# ... or force ignoredups and ignorespace
HISTCONTROL=ignoredups:ignorespace

# append to the history file, don't overwrite it
shopt -s histappend

# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000

# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize

# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color_prompt=yes;;
esac

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)
        color_prompt=yes
    else
        color_prompt=
    fi
fi

if [ "$color_prompt" = yes ]; then
    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt

# 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

# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    alias ls='ls --color=auto'
    #alias dir='dir --color=auto'
    #alias vdir='vdir --color=auto'

    alias grep='grep --color=auto'
    alias fgrep='fgrep --color=auto'
    alias egrep='egrep --color=auto'
fi

# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi

=======
Pour la coloration dans l'environnement du shell bash du compte root
il n'y a qu'une simple "correction" à faire dans le fichier /root/.bashrc

Voilà la ligne (numéro 40) concernée dans le fichier ~/.bashrc d'un compte utilisateur non privilégié :

michel@kubu:~$ grep  -n  xterm-color  ~/.bashrc
40:    xterm-color|*-256color) color_prompt=yes;;
michel@kubu:~$ 

Et voilà la ligne numéro 33 qui est dans le fichier /root/.bashrc

michel@kubu:~$ sudo  grep  -n  xterm-color  /root/.bashrc
33:    xterm-color) color_prompt=yes;;
michel@kubu:~$ 

Pour corriger ça, il suffit de lancer la ligne de commandes suivante :

michel@kubu:~$ sudo sed -i.back 's/xterm-color/xterm-color|\*-256color/' /root/.bashrc
michel@kubu:~$ 

et on pourra vérifier la modification qui a été faite :

michel@kubu:~$ sudo  grep  -n  xterm-color  /root/.bashrc
33:    xterm-color|*-256color) color_prompt=yes;;
michel@kubu:~$ 

De plus, l'utilisation de l'option i de la commande sed en ayant spécifié d'utiliser le suffixe .back
aura permis de sauvegarder une copie du fichier original et de renommer cette copie en /root/.bashrc.back

=======
L'auto-completion est déjà activée dans l'environnement bash pour le compte root comme pour les comptes utilisateurs non privilégiés.

C'est la touche TAB seule qu'il faut appuyer => pas besoin d'appuyer en même temps la touche Alt
S'il y a plusieurs possibilité d'auto-completion, la liste des possibles s'affiche en appuyant une deuxième fois sur cette même touche TAB

Dernière modification par MicP (Le 26/05/2021, à 11:29)

Hors ligne

#4 Le 26/05/2021, à 11:28

christophe_D

Re : Bash complétion ROOT

Vobul a écrit :

Salut Christophe,

Je t'invite à te familiariser avec un éditeur de texte non graphique, tel que nano, vim ou emacs (grosse préférence pour vim perso). Ça te simplifiera la vie wink

Oui, c'est vrai pour vim, et pourtant dans les années 90 quand j'ai tester mon premier linux (une slackware) on l'utilisé beaucoup mais un passage par Mandrake avec bureau Kde j'ai pris l'habitude des éditeur de texte graphique ... roll

Concernant zsh j'ai un peu entendu parlé, mais jamais tester. J'ai toujours travailler mes scripts avec bash


Ubuntu 21.10

Hors ligne

#5 Le 26/05/2021, à 11:34

christophe_D

Re : Bash complétion ROOT

MicP a écrit :

Bonjour

Avec la commande cp tu aurais pu utiliser l'option b
qui permet d'automatiquement renommer un fichier qui risquerait d'être "écrasé" par la copie.

J'avoue que j'y suis aller bourrin sad mais ça fonctionne


Ubuntu 21.10

Hors ligne

#6 Le 27/05/2021, à 09:39

MicP

Re : Bash complétion ROOT

T'en fais pas, comme tu disais, ta méthode a fonctionné smile

C'est juste que j'avais trouvé d'où venait le problème de coloration
et que je t'indiquais en plus une possibilité pour utiliser la commande cp

Ceci dit, je ne sais pas pourquoi, sur Ubuntu, le test de la variable TERM dans le fichier /boot/.bashrc
n'est pas le même que celui qui est dans le fichier ~/.bashrc des comptes utilisateurs non privilégiés.

Dernière modification par MicP (Le 27/05/2021, à 09:41)

Hors ligne