23 févr. 2011

illegal use of ls

Capture d écran 2011 02 19 à 19 06 05
A chaque fois je me fais avoir par ça !
Sur OSX, Apple fournit son propre set de fonctions systèmes comme ls, pwd, etc.. en fait certains paramètres changent, la raison m'échappe encore, mais comme j'ai besoin d'avoir ce genre de commandes à l'exact d'une plateforme à l'autre (à la fac et sur mon fixe entre autres), et d'ailleurs j'utilise un unique fichier de conf .zshrc que je synchronise via Dropbox.





J'ai bien pensé à gérer les alias dans mon .zshrc en fonction de la plateforme mais:
  1. je compléxifie le fichier de conf
  2. le comportement n'est fondamentalement pas le même
  3. je ne sais pas sur quoi je pourais encore tomber avec des versions différentes des outils gnu
  4. Le mieux ca serait que j'utilise les versions Gnu au lieu des outils d'Apple. J'utilise donc le package coreutils de macports.
Hélas depuis quelques temps j'ai installé je ne sais plus quoi (kdebase4 il me semble...) qui m'as mis à jours coreutils. Jusque là coreutils était installé dans /opt/local/bin/. Pour empêcher un conflit avec les commandes d'Apple, les outils gnu ont les mêmes noms préfixés de la lettre "g". Mais il était possible d'overrider ce "g" et de garder les noms originaux, évidément le but étant d'avoir dans mon PATH le chemin vers les bin de macports (/opt/local/bin) avant ceux d'Apple (/usr/bin) afin d'utiliser les outils gnu. Depuis la version 8.5.1 du package de coreutils, il n'est plus possible d'overrider, et du coup, c'est plus le ls de Gnu qui est utilisé, mais bien celui d'Apple (voir capture d'écran au début)
Pour ls par exemple, je me suis rendu compte sur ce lien qu'Apple avait changé le flag --color par -G, et du coup comme j'ai certains alias dans mon .zshrc:
alias ls='ls --classify --tabsize=0 --literal --color=auto --show-control-chars --human-readable'
du coup maintenant j'ai aliasé ls à gls (son équivalent Gnu)
Et depuis tout fonctionne !
Technorati Tags: , ,

Aucun commentaire: