Comparaison du scripting sous différents shell

À ce sujet, il y a eu de menus soucis lors du passage de bash à dash comme shell par défaut pour /bin/sh, initié si j’ai bonne mémoire par Ubuntu puis mis en place quelque temps après par Debian (sid/squeeze).
L’avantage c’est que ça a permis de nettoyer les quelques scripts qui utilisaient des extensions “propriétaires” à bash.[/quote]
Non c’est sous l’impulsion de Debian. Tu crois vraiment qu’ubuntu a la gueule des barbus qui sont stricts avec les standards ? Le “d” de dash veut dire Debian et etch devait utiliser dash mais ce ne fut pas le cas par manque de temps.

Oui c’est pour le même genre de raison qu’il m’arrive de scripter avec zsh. Regarde celui là :

[code]function videDownload (){
zmodload zsh/datetime
zmodload zsh/files
zmodload -F zsh/stat b:zstat

dir="$HOME/Téléchargements"

# On cherche les fichiers plus vieux d'une semaine
date=$((EPOCHSECONDS-60*60*24*7*3))

IFS='
'
for file in $dir/**/* ; do
    if [ ! -d $file ]; then
        zstat -A atime +atime $file
        if [ $atime -lt $date ]; then
            rm $file
        fi
    else
        rmdir $file 2> /dev/null
    fi
done

}[/code]
Aucun appel à un programme extérieur, du zsh pur et dur. :smiley:

Qui est cencé se lancer dans un mode de compatibilité. C’est pas parce qu’une erreur est généralisée qu’il faut l’utiliser…

Salut,

Personnellement j’écris mes scripts sous la forme :

Et libre à l’utilisateur de changer de shell :wink:

Je me suis déjà posé la question de l’usage de env.
Je ne sais pas où c’est défini (POSIX ? ni la page man ni la page info ne donnent d’information là de ssus), donc quand c’est du sh, je préfère mettre /bin/sh car je sais que c’est un standard.

[quote=“MisterFreez”]Je me suis déjà posé la question de l’usage de env.
Je ne sais pas où c’est défini (POSIX ? ni la page man ni la page info ne donnent d’information là de ssus), donc quand c’est du sh, je préfère mettre /bin/sh car je sais que c’est un standard.[/quote]

fais un man env

[quote=“L0u!$”][quote=“MisterFreez”]Je me suis déjà posé la question de l’usage de env.
Je ne sais pas où c’est défini (POSIX ? ni la page man ni la page info ne donnent d’information là dessus), donc quand c’est du sh, je préfère mettre /bin/sh car je sais que c’est un standard.[/quote]

fais un man env[/quote]
Très drôle.

Salut,

env n’est qu’un aiguillage vers le paramètre et donc pour les fanatiques de tel ou tel shell d’essayer de changer facilement :slightly_smiling:

J’ai entendu dire que sous certains unixes, les shells n’étaient pas forcément dans le même dossier (/usr/bin/bash par exemple) et que donc en utilisant env, c’était plus portable (lui serait toujours dans /usr/bin). À confirmer…

Bon voila j’ai effectué des recherches supplémentaires et à partir d’aujourd’hui mes scripts utilisent env dans leur shaban. En effet la page manuel de env sous OpenBSD indique clairement que c’est une commande POSIX (du moins le fonctionnement par défaut et l’option -i).

openbsd.org/cgi-bin/man.cgi? … &sektion=1

Je vais tenter de voir pour améliorer la page man de Debian.

Debian propose aussi 9base, un paquet qui réunit :

  • un shell, le rc shell

  • toute une floppée d’utilitaires :awk basename bc cal cat cleanname date dc du echo factor fortune freq getflags grep hoc ls mk mkdir mtime primes rc read sed seq sleep sort tail tee test touch tr troff uniq yacc

  • quelques bibliothèques :
    Plan 9 libc, libbio, libregexp, libfmt et libutf

l’ensemble comprenant le shell, les utilitaires et les bibliothèques est plus petit que bash tout seul.

La seule doc sur le rc shell que je connaisse est en anglais : doc.cat-v.org/plan_9/4th_edition/papers/rc
Dans le paquet debian, il manque peut-être 2 ou 3 utilitaires de cette liste, il seront présent lors de la prochaine version de 9base en Sid.

[quote=“MisterFreez”]Aucun appel à un programme extérieur, du zsh pur et dur. :smiley: [/quote]Je ne connais pas zsh, mais ta remarque pose question.
Zsh serait il au shell ce qu’emacs est à l’éditeur de texte ? :mrgreen:

[quote=“eol”][quote=“MisterFreez”]Aucun appel à un programme extérieur, du zsh pur et dur. :smiley: [/quote]Je ne connais pas zsh, mais ta remarque pose question.
Zsh serait il au shell ce qu’emacs est à l’éditeur de texte ? :mrgreen:[/quote]
Exactement en mieux (parce que c’est pas du lisp). zsh intègre de bas eu module pour faire du FTP et un module pour faire du TCP (ainsi qu’un module curse).

ZSH c’est à la fois un shell interactif puissant et un langage de programmation puissant.