1. Variables d’environnement

La variable PATH contient les chemins dans lesquels le shell cherche les programmes à lancer.

  • Afficher le contenu de cette variable via la commande echo $PATH.
  • Modifier cette variable pour y ajouter le chemin de Desktop : PATH=$PATH:~/Bureau. Exécuter which firefox pour voir le chemin complet du navigateur.
  • Afficher le contenu de PATH dans le terminal courant, dans un terminal fils, dans un terminal disjoint.
  • Utiliser la commande export PATH et afficher le contenu de PATH dans le terminal courant, puis dans un terminal fils (en lançant simplement la commande bash pour entrer dans un shell fils ; il suffit de tapez la commande exit ou la combinaison de touches CTRL D pour revenir au shell parent).
  • La variable HOME contient le chemin de votre dossier personnel. La variable PWD contient le chemin courant. HOST contient le nom de l’ordinateur courant. RANDOM contient un nombre aléatoire (change à chaque appel). Toutes ces variables se comportent comme PATH : si elles sont exportées, elles se transmettent aux processus fils ; le contenu de la variable est obtenu en le précédant d’un $.

Le fichier .bashrc est lu à chaque démarrage du shell. Si on veut que des réglages se conservent au prochain démarrage, on peut ajouter ces réglages dans ce fichier. Si on y met des commandes, elles seront elles aussi exécutées au démarrage du shell. Par exemple, ajoutons echo "Salutations $USER" en dernière ligne du fichier .bashrc. Au prochain lancement de bash, nous serons accueillis par des salutations.

Il est également possible d’ajouter des raccourcis de commande. Par exemple pour que cd.. fasse l’effet de cd .., on peut ajouter alias cd..="cd ..". On peut aussi ajouter alias ll="ls -ail".

2. Scripts

À l’aide de tubes et redirections, nous pouvons faire des commandes complexes. Si celles-ci sont amenées à être réutilisées, on peut les transformer en scripts qui pourront être réutilisés. Pour celà, on écrit la commande en question dans un fichier dont la première ligne sera #!/bin/sh. On octroie les droits d’exécution sur ce fichier et on l’appelle par la commande ./fichier.

  • Recopiez les lignes suivantes dans un fichier psit.sh

    #!/bin/sh
    
    ps aux | cut -d ' ' -f 1 | sort | uniq

    Exécutez ce script avec ./psit.sh.

  • Écrivez un script comptant les membres de chaque groupe d’utilisateurs locaux.
  • Le symbole $1 représente le premier argument du script. Testez le script suivant avec et sans argument :

    #!/bin/sh
    
    ps aux | grep $1 | tr -s ' ' | cut -d ' ' -f 2

    Nous aimerions maintenant envoyer un signal (avec kill) aux processus repérés par le script précédent. Pour celà, nous allons utiliser la commande kill sur le résultat de cette commande. Il faut entourer cette commande d’accents graves.

  • Modifiez le script précédent comme suit

    #!/bin/sh
    
    kill `ps aux | grep $1 | tr -s ' ' | cut -d ' ' -f 2`

    Que fait-il ?