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 05/06/2011, à 19:27

Woki

[ Résolu ] Shell bash : Coloration non fonctionnelle.

Bonjour,

Cela fait plusieurs jours déjà que je me cherche à résoudre ce "problème" (qui est surtout inconfortant, en fait).
Voilà, lorsque j'utilise la commande ls dans le terminal, celui ci me retourne :

$ ls
ls: préfixe non reconnu : hl
ls: impossible d'analyser la valeur de la variable d'environnement LS_COLORS

Avec toutefois la liste des fichiers, mais non colorés.

J'ai testé dans les autres sessions, y compris en root, et là, la coloration s'opère sans souci.

J'ai essayé de remplacer mon .bashrc par un autre trouvé sur le net, sans succès.

J'ai même essayé un :

# dircolors -p > /home/woki/.dircolors

(en root donc)
En modifiant ensuite mon .bashrc pour modifier le "eval `dircolors -b ~/.dircolors`".

Là encore, échec.

Je me suis donc décidé à poster, vu que je n'ai aperçu aucun autre sujet similaire. (Et puis si jamais ça arrive à quelqu'un d'autre, il saura directement comment faire wink )


EDIT : Résolu au post #9

Dernière modification par Woki (Le 13/06/2011, à 13:20)

Hors ligne

#2 Le 05/06/2011, à 19:52

pode

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Quel est le résultat de la commande suivante ?

type ls

La variable LS_COLORS est fixée via l'option -b de la commande dircolors (au passage, pas besoin d'être root pour modifier le fichier ~/.dircolors)
Quel est le contenu exact du fichier ~/.bashrc ?

Hors ligne

#3 Le 05/06/2011, à 20:41

Woki

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Merci pour la réponse.
Alors

$ type ls
ls est un alias vers « ls --color=auto »

Et le .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
#export HISTCONTROL=ignoredups

# 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 "$(lesspipe)"

# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" -a -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)
#    PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
#    ;;
#*)
#    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
#    ;;
#esac

# Comment in the above and uncomment this below for a color prompt
#PS1='${debian_chroot:+($debian_chroot)}\[\033[0;31m\]\u@\h\[\033[0;0m\]:\[\033[0;33m\]\w\[\033[0;0m\]\$ '

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
    PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'
    ;;
*)
    ;;
esac

# 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 color support of ls and also add handy aliases
if [ "$TERM" != "dumb" ]; then
    eval `dircolors -b ~/.dircolors`
    alias ls='ls --color=auto'
    #alias dir='ls --color=auto --format=vertical'
    #alias vdir='ls --color=auto --format=long'
fi

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

# 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 ]; then
#    . /etc/bash_completion
#fi

Dernière modification par Woki (Le 05/06/2011, à 20:47)

Hors ligne

#4 Le 11/06/2011, à 19:11

Woki

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Quelqu'un ?

Hors ligne

#5 Le 11/06/2011, à 19:27

jilucorg

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Chaipas, c'est peut-être exactement pareil au final, mais alors que tu as :

 # enable color support of ls and also add handy aliases
if [ "$TERM" != "dumb" ]; then
    eval `dircolors -b ~/.dircolors`
    alias ls='ls --color=auto'

moi j'ai ceci dans mon .bashrc, je n'ai touché à aucun '(.)dircolors' et ça marche :

# 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'

Sans doute inutile voire stupide, mais c'était surtout pour que tu te sentes moins seul wink


  jiluc.
––
             Pour soutenir concrètement le logiciel libre : l'April !    http://www.april.org

Hors ligne

#6 Le 11/06/2011, à 19:53

Woki

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Merci de ta réponse, jilucorg.
Bien qu'elle n'est pas résolu le problème, elle a permis d'avancer.
En effet, j'ai un autre ordinateur avec le même ubuntu à ma disposition, j'ai donc eu l'idée d'essayer de copier le bashrc de l'ordinateur où la coloration de fonctionne pas sur cet autre ordinateur.
Et bien, la coloration fonctionne impeccable, aucun message d'erreur.
Je pense qu'on peut en conclure que ça ne vient pas du bashrc. wink

Hors ligne

#7 Le 11/06/2011, à 20:24

pode

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

En récupérant les sources de ls (apt-get source coreutils), on voit :

$ cat coreutils-8.5/po/fr.po
[...]
#: src/ls.c:2370
#, c-format
msgid "unrecognized prefix: %s"
msgstr "préfixe non reconnu : %s"

et :

$ cat coreutils-8.5/src/ls.c
[...]
static void
parse_ls_color (void)
{
  const char *p;                /* Pointer to character being parsed */
  char *buf;                    /* color_buf buffer pointer */
  int state;                    /* State of parser */
  int ind_no;                   /* Indicator number */
  char label[3];                /* Indicator label */
  struct color_ext_type *ext;   /* Extension we are working on */

  if ((p = getenv ("LS_COLORS")) == NULL || *p == '\0')
[...]
        case 3:         /* Equal sign after indicator label */
          state = -1;   /* Assume failure...  */
          if (*(p++) == '=')/* It *should* be...  */
            {
              for (ind_no = 0; indicator_name[ind_no] != NULL; ++ind_no)
                {
                  if (STREQ (label, indicator_name[ind_no]))
                    {
                      color_indicator[ind_no].string = buf;
                      state = (get_funky_string (&buf, &p, false,
                                                 &color_indicator[ind_no].len)
                               ? 1 : -1);
                      break;
                    }
                }
              if (state == -1)
                error (0, 0, _("unrecognized prefix: %s"), quotearg (label));
            }
          break;

Donc, c'est la variable LS_COLORS qui est erronée. Quelque chose comme .....=hl.....

Que renvoie la commande suivante ?

echo $LS_COLORS

Hors ligne

#8 Le 12/06/2011, à 22:13

Woki

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Bonsoir,

$ echo $LS_COLORS
rs=0:di=01;34:ln=01;36:hl=44;37:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:

Si j'ai bien compris, ça viendrais du « [...]ln=01;36:hl=44;37:pi=40;33:[...] » ?

Et, je sais pas si ça peut être utile, mais voici le .dircolors :

# Configuration file for dircolors, a utility to help you set the
# LS_COLORS environment variable used by GNU ls with the --color option.
# Copyright (C) 1996, 1999-2008
# Free Software Foundation, Inc.
# Copying and distribution of this file, with or without modification,
# are permitted provided the copyright notice and this notice are preserved.
# The keywords COLOR, OPTIONS, and EIGHTBIT (honored by the
# slackware version of dircolors) are recognized but ignored.
# Below, there should be one TERM entry for each termtype that is colorizable
TERM Eterm
TERM ansi
TERM color-xterm
TERM con132x25
TERM con132x30
TERM con132x43
TERM con132x60
TERM con80x25
TERM con80x28
TERM con80x30
TERM con80x43
TERM con80x50
TERM con80x60
TERM cons25
TERM console
TERM cygwin
TERM dtterm
TERM eterm-color
TERM gnome
TERM gnome-256color
TERM jfbterm
TERM konsole
TERM kterm
TERM linux
TERM linux-c
TERM mach-color
TERM mlterm
TERM putty
TERM rxvt
TERM rxvt-cygwin
TERM rxvt-cygwin-native
TERM rxvt-unicode
TERM screen
TERM screen-256color
TERM screen-bce
TERM screen-w
TERM screen.linux
TERM vt100
TERM xterm
TERM xterm-16color
TERM xterm-256color
TERM xterm-88color
TERM xterm-color
TERM xterm-debian
# Below are the color init strings for the basic file types. A color init
# string consists of one or more of the following numeric codes:
# Attribute codes:
# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
# Text color codes:
# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
# Background color codes:
# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
#NORMAL 00 # no color code at all
#FILE 00 # regular file: use no color at all
RESET 0 # reset to "normal" color
DIR 01;34 # directory
LINK 01;36 # symbolic link. (If you set this to 'target' instead of a
 # numerical value, the color is as for the file pointed to.)
HARDLINK 44;37 # regular file with more than one link
FIFO 40;33 # pipe
SOCK 01;35 # socket
DOOR 01;35 # door
BLK 40;33;01 # block device driver
CHR 40;33;01 # character device driver
ORPHAN 40;31;01 # symlink to nonexistent file, or non-stat'able file
SETUID 37;41 # file that is setuid (u+s)
SETGID 30;43 # file that is setgid (g+s)
CAPABILITY 30;41 # file with capability
STICKY_OTHER_WRITABLE 30;42 # dir that is sticky and other-writable (+t,o+w)
OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky
STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
# This is for files with execute permission:
EXEC 01;32
# List any file extensions like '.gz' or '.tar' that you would like ls
# to colorize below. Put the extension, a space, and the color init string.
# (and any comments you want to add after a '#')
# If you use DOS-style suffixes, you may want to uncomment the following:
#.cmd 01;32 # executables (bright green)
#.exe 01;32
#.com 01;32
#.btm 01;32
#.bat 01;32
# Or if you want to colorize scripts even if they do not have the
# executable bit actually set.
#.sh 01;32
#.csh 01;32
 # archives or compressed (bright red)
.tar 01;31
.tgz 01;31
.arj 01;31
.taz 01;31
.lzh 01;31
.lzma 01;31
.zip 01;31
.z 01;31
.Z 01;31
.dz 01;31
.gz 01;31
.bz2 01;31
.bz 01;31
.tbz2 01;31
.tz 01;31
.deb 01;31
.rpm 01;31
.jar 01;31
.rar 01;31
.ace 01;31
.zoo 01;31
.cpio 01;31
.7z 01;31
.rz 01;31
# image formats
.jpg 01;35
.jpeg 01;35
.gif 01;35
.bmp 01;35
.pbm 01;35
.pgm 01;35
.ppm 01;35
.tga 01;35
.xbm 01;35
.xpm 01;35
.tif 01;35
.tiff 01;35
.png 01;35
.svg 01;35
.svgz 01;35
.mng 01;35
.pcx 01;35
.mov 01;35
.mpg 01;35
.mpeg 01;35
.m2v 01;35
.mkv 01;35
.ogm 01;35
.mp4 01;35
.m4v 01;35
.mp4v 01;35
.vob 01;35
.qt 01;35
.nuv 01;35
.wmv 01;35
.asf 01;35
.rm 01;35
.rmvb 01;35
.flc 01;35
.avi 01;35
.fli 01;35
.flv 01;35
.gl 01;35
.dl 01;35
.xcf 01;35
.xwd 01;35
.yuv 01;35
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
.axv 01;35
.anx 01;35
.ogv 01;35
.ogx 01;35
# audio formats
.aac 00;36
.au 00;36
.flac 00;36
.mid 00;36
.midi 00;36
.mka 00;36
.mp3 00;36
.mpc 00;36
.ogg 00;36
.ra 00;36
.wav 00;36
# http://wiki.xiph.org/index.php/MIME_Types_and_File_Extensions
.axa 00;36
.oga 00;36
.spx 00;36
.xspf 00;36

Merci !

Dernière modification par Woki (Le 12/06/2011, à 22:20)

Hors ligne

#9 Le 12/06/2011, à 22:42

pode

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Woki a écrit :

Si j'ai bien compris, ça viendrais du « [...]ln=01;36:hl=44;37:pi=40;33:[...] » ?

Tout à fait

Woki a écrit :

Et, je sais pas si ça peut être utile, mais voici le .dircolors :

[...]
HARDLINK 44;37 # regular file with more than one link

Si tu supprimes cette ligne, ça devrait aller. En effet :
Echec avec hl

$ eval dircolors -b /tmp/dircolors_original
dircolors: «/tmp/dircolors»:68 : mot clé HARDLINK non reconnu

Succès sans hl

$ eval dircolors -b /tmp/dircolors_sans_hardlink
LS_COLORS='rs=0:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:';
export LS_COLORS

Hors ligne

#10 Le 12/06/2011, à 23:07

Woki

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Bon, ben j'sais pas d'où est venue cette ligne, mais toujours est-il qu'elle était bien planquée. La commenter a effectivement résolu le problème, je te remercie, ça fait plaisir de voir comment la communauté Ubuntu est présente (et accessoirement, de revoir aussi de la couleur wink ) ! big_smile

Hors ligne

#11 Le 13/06/2011, à 09:20

pode

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Cela vient d'une évolution de coreutils qui date de la version 7.5 :

$ cat coreutils-8.5/Changelog : 
[...]
2009-06-11  Kamil Dudka  <kdudka@redhat.com>

        ls --color: do not colorize files with multiple hard links by default
        * src/ls.c: Rename hl->mh, do not colorize files with multiple
        hard links by default.
        * src/dircolors.c: Rename HARDLINK -> MULTIHARDLINK, hl -> mh.
        * src/dircolors.hin: Do not colorize files with multiple hard links by

$ cat coreutils-8.5/NEWS : 
[...]
* Noteworthy changes in release 7.5 (2009-08-20) [stable]
[...]
** Changes in behavior

  ls --color: files with multiple hard links are no longer colored differently
  by default. That can be enabled by changing the LS_COLORS environment
  variable. You can control that using the MULTIHARDLINK dircolors input
  variable which corresponds to the 'mh' LS_COLORS item. Note these variables
  were renamed from 'HARDLINK' and 'hl' which were available since
  coreutils-7.1 when this feature was introduced.

Donc, si tu avais créé ou utilisé un ancien fichier ~/.dircolors généré avec un paquet coreutils >= à 7.1 et < à 7.5, le fichier contenait HARDLINK.
Et ce fichier est devenu invalide au passage à coreutils >= 7.5

Hors ligne

#12 Le 13/06/2011, à 11:33

Woki

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Pourtant non, c'est ce qui m'étonne. J'ai justement créé ce ~/.dircolors suite à la disparition de la coloration, me disant que ça deviendrait plus simple à résoudre. En plus, ce problème n'est apparu que dans ma session...



EDIT : Finalement, il semble que la solution de jilucorg ai fonctionné, après re-test.

# 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'

Est-ce qu'on pourrait simplement m'expliquer l'avant dernière ligne :

    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"

Ce que je comprends, c'est que le .bashrc effectue un test pour voir s'il y a un ~/.dircolors (« test -r ~/.dircolors »), et qu'ensuite il prend le ~/.dircolors, (avec « eval "$(dircolors -b ~/.dircolors)" » ) si le test fonctionne, OU (le « || ») le dircolors par défaut ( « eval "$(dircolors -b)" » ).
J'ai bon ?

En l'occurrence, je viens de retester avec le HARDLINK (ce qui posait le problème), et on se retrouve avec le même problème. Même chose en supprimant le ~/.dircolors.
Donc si j'ai bon dans mon raisonnement précédent, cela veut dire que ca fonctionne uniquement parce qu'il y a un ~/.dircolors, et qu'il est «aux normes».

Dernière modification par Woki (Le 13/06/2011, à 12:00)

Hors ligne

#13 Le 13/06/2011, à 12:09

pode

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Oui, c'est ça.
Que donne les commandes suivantes ?

$ lsb_release -a
$ dpkg-query -s coreutils
$ ls --version
$ dircolors --version

Hors ligne

#14 Le 13/06/2011, à 12:19

Woki

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Alors, c'est parti !

$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 10.04.2 LTS
Release:    10.04
Codename:    lucid
$ dpkg-query -s coreutils
Package: coreutils
Essential: yes
Status: install ok installed
Priority: required
Section: utils
Installed-Size: 12152
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: i386
Version: 7.4-2ubuntu3
Replaces: mktemp
Pre-Depends: libacl1 (>= 2.2.11-1), libattr1 (>= 2.4.41-1), libc6 (>= 2.11), libselinux1 (>= 1.32)
Description: The GNU core utilities
 This package contains the essential basic system utilities.
 .
 Specifically, this package includes:
 basename cat chgrp chmod chown chroot cksum comm cp csplit cut date dd df dir
 dircolors dirname du echo env expand expr factor false fmt fold groups head
 hostid id install join link ln logname ls md5sum mkdir mkfifo mknod mktemp
 mv nice nl nohup od paste pathchk pinky pr printenv printf ptx pwd readlink
 rm rmdir sha1sum seq shred sleep sort split stat stty sum sync tac tail tee
 test touch tr true tsort tty uname unexpand uniq unlink users vdir wc who
 whoami yes
Original-Maintainer: Michael Stone <mstone@debian.org>
$ ls --version
ls (GNU coreutils) 8.11
Copyright © 2011 Free Software Foundation, Inc.
License GPLv3+ : GNU GPL version 3 ou ultérieure
<http://gnu.org/licenses/gpl.html>
Ceci est logiciel libre, vous êtes libre de le modifier et de le redistribuer.
Ce logiciel n'est accompagné d'ABSOLUMENT AUCUNE GARANTIE, dans les limites
autorisees par la loi applicable.

Écrit par Richard M. Stallman et David MacKenzie.
$ dircolors --version
dircolors (GNU coreutils) 7.4
Copyright © 2009 Free Software Foundation, Inc.
License GPLv3+ : GNU GPL version 3 ou ultérieure
<http://gnu.org/licenses/gpl.html>
Ceci est logiciel libre, vous êtes libre de le modifier et de le redistribuer.
Ce logiciel n'est accompagné d'ABSOLUMENT AUCUNE GARANTIE, dans les limites
autorisees par la loi applicable.

Écrit par H. Peter Anvin.

Hors ligne

#15 Le 13/06/2011, à 13:09

pode

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Woki a écrit :
$ dpkg-query -s coreutils
Package: coreutils
Version: 7.4-2ubuntu3
$ ls --version
ls (GNU coreutils) 8.11
$ dircolors --version
dircolors (GNU coreutils) 7.4

Tout s'explique !!!
La commande dircolors vient du paquet coreutils en version 7.4, donc c'est normal qu'elle génère une variable LS_COLORS avec une ligne HARDLINK (cf. commentaire 11).
Par contre, la commande ls vient du paquet coreutils en version 8.11, donc c'est normal qu'elle ne gère plus une variable LS_COLORS avec une ligne HARDLINK (encore, cf. commentaire 11).

Le problème vient donc d'une incohérence des commandes qui sont installées sur ton ordinateur : un dircolors du paquet coreutils en version 7.4 et un ls du paquet coreutils en version 8.11
Mais je ne sais pas comment tu en es arrivé là...

Que donne la commande suivante ?

$ dpkg -S $(which ls)

Hors ligne

#16 Le 13/06/2011, à 13:18

Woki

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

$ dpkg -S $(which ls)
dpkg : /home/woki/bin/ls introuvable.

J'ai effectivement un dossier ~/bin (ainsi que dev, etc, lib, proc, sys, tmp, usr, var), mais ça, je ne sais pas comment ils sont arrivés là. Ils ont du arriver suite à une commande, évidemment, mais je suis incapable de me souvenir de laquelle.

EDIT :  en regardant le contenu desdits fichiers, j'ai trouvé plusieurs occurence de fichier contenant "pacman". Je ne sais plus si c'est parce que j'avais voulu voir si pacman pouvait fonctionner sous ubuntu, ou si c'est dû à une erreur lors d'une install' d'Archlinux en chroot.

EDIT 2 : Bon, je crois qu'on a effectivement pris le problème à sa source. J'ai déplacé tous ces fichiers qui n'avaient rien à faire là dans un dossier temporaire, et cette fois, même en supprimant le .dircolors, la coloration fonctionne.
Et cete fois, j'ai

$ dpkg -S $(which ls)
coreutils: /bin/ls

Cela venait probablement du ~/bin/ls que j'ai aperçu et déplacé avec le reste.

EDIT 3 : Si jamais c'est utile pour mieux comprendre :

$ ls -RA fichiers_intrus/
fichiers_intrus/:
bin  dev  etc  lib  proc  sys  tmp  usr  var

fichiers_intrus/bin:
bash  cat  findmnt  ls  more  ping

fichiers_intrus/dev:

fichiers_intrus/etc:
pacman.conf

fichiers_intrus/lib:
ld-linux.so.2     libnsl.so.1            libnss_nisplus-2.13.so
libacl.so.1       libnss_compat-2.13.so  libnss_nisplus.so.2
libattr.so.1      libnss_compat.so.2     libnss_nis.so.2
libblkid.so.1     libnss_dns-2.13.so     libpthread.so.0
libbz2.so.1.0     libnss_dns.so.2        libreadline.so.6
libcap.so.2       libnss_files-2.13.so   libresolv.so.2
libc.so.6         libnss_files.so.2      librt.so.1
libdl.so.2        libnss_hesiod-2.13.so  libuuid.so.1
libmount.so.1     libnss_hesiod.so.2
libncursesw.so.5  libnss_nis-2.13.so

fichiers_intrus/proc:

fichiers_intrus/sys:

fichiers_intrus/tmp:
archlinux.chroot.i686.tgz

fichiers_intrus/usr:
bin  lib

fichiers_intrus/usr/bin:
bsdtar  env  ex  linux32  nano  pacman  vi

fichiers_intrus/usr/lib:
libalpm.so.6     libcrypto.so.1.0.0  libfetch.so   libssl.so.1.0.0
libarchive.so.2  libexpat.so.1       liblzma.so.5  libz.so.1

fichiers_intrus/var:
cache  lib  log

fichiers_intrus/var/cache:
pacman

fichiers_intrus/var/cache/pacman:
pkg

fichiers_intrus/var/cache/pacman/pkg:

fichiers_intrus/var/lib:
pacman

fichiers_intrus/var/lib/pacman:

fichiers_intrus/var/log:

Dernière modification par Woki (Le 13/06/2011, à 13:35)

Hors ligne

#17 Le 13/06/2011, à 13:35

pode

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Woki a écrit :

Cela venait probablement du ~/bin/ls que j'ai aperçu et déplacé avec le reste.

Oui, car tu dois avoir le répertoire ~/bin (ou directement /home/woki/bin) dans le PATH de ton compte

Hors ligne

#18 Le 13/06/2011, à 13:37

Woki

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

pode a écrit :

Oui, car tu dois avoir le répertoire ~/bin (ou directement /home/woki/bin) dans le PATH de ton compte

Le PATH ? Qu'est-ce à dire ?

Hors ligne

#19 Le 13/06/2011, à 13:59

pode

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Woki a écrit :

Le PATH ? Qu'est-ce à dire ?

La variable PATH permet d'indiquer la liste des répertoires (séparés par des : ) dans lesquels il faut chercher une commande, lorsqu'on la lance sans donner son chemin d'accès (relatif ou absolu). L'ordre de parcours des répertoires va de la gauche à la droite de la valeur de la variable PATH

Par exemple, avec :

~/bin/ls

on n'utilise pas le PATH

Par contre, avec :

ls

on va utiliser le PATH

Chez moi, PATH vaut :

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Sous Ubuntu, la valeur chargée lors du démarrage est indiquée dans le fichier /etc/environment
(Elle est aussi définie dans le fichier /etc/login.defs, qui est utilisé par la commande su ou login, mais c'est du détail)
Elle est aussi souvent modifiée dans les ~/.bashrc, ~/.profile, /etc/profile, /etc/bashrc ou /etc/bash.bashrc, ...

Hors ligne

#20 Le 13/06/2011, à 14:07

Woki

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Exact, je me retrouve avec

$ echo $PATH
/home/woki/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Donc avec 'ls', il a d'abord cherché la commande dans /home/woki/bin, et comme il l'a trouvée, il l'a utilisée, c'est ça ?

Hors ligne

#21 Le 13/06/2011, à 14:14

pode

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Oui, c'est ça.

Hors ligne

#22 Le 14/06/2011, à 17:29

Woki

Re : [ Résolu ] Shell bash : Coloration non fonctionnelle.

Je vois. Eh bien, on a enfin réussi à cibler le problème exact et à le soigner à sa source !
Merci pour tous ces éclaircissements.
Je me méfierai plus dorénavant, notamment sur les fichiers qui apparaissent dans mon ~. wink

Hors ligne