Salut. Le script précédent s'appelle lui-même de manière récursif. Il faut pas l’utiliser.
Supposons qu'on veut ouvrir un fichier nommé lecture.txt avec nano.
L’idée c’est de créer un script shell qui lance nano et d’autre programme avant lui.
On nomme ce script nano et on le place dans /usr/local/bin pour qu’il puisse être appelé dans un script ou un terminal (comme /usr/local/bin est en premier dans la variable d'environnement $PATH ce sera /usr/local/bin/nano qui sera lancé lors d'un appel de nano et pas /usr/bin/nano)
Maintenant si on veut faire ça avec emacs, vi , vim, pico, more, less, cat, … , l’idée c’est de créer un script générique nommée rw_wrapper puis de créer des liens symboliques vers lui du même nom que les commandes ci-dessus. rw_wrapper devine la commande à appeler grâce au nom du lien symbolique.
Ci-dessous le script corrigé
#! /bin/sh
set -eu
script_name=$(basename "$0")
script_path=$(realpath -s "$0")
command_path=$(whereis -b "$script_name" | grep -o "[^ ]*bin[^ ]*" | sed "s|$script_path||g;/^[[:space:]]*$/d")
echo "Starting some command before $script_name ($command_path)"
echo "Starting $script_name ($command_path)" ; $command_path "$@"
echo "Starting some command after $script_name ($command_path)"