Vous avez besoin de convertir votre script à une fonction shell:
#!/bin/bash
#
# this script should not be run directly,
# instead you need to source it from your .bashrc,
# by adding this line:
# . ~/bin/myprog.sh
#
function myprog() {
A=$1
B=$2
echo "aaa ${A} bbb ${B} ccc"
cd /proc
}
La raison en est que chaque processus a son propre répertoire en cours, et lors de l'exécution d'un programme à partir de la coquille, il est exécuté dans un nouveau processus. La norme "cd", "pushd" et "popd" sont intégrés à la coque interprète afin qu'ils affectent le processus du shell.
En faisant de votre programme une fonction shell, vous ajoutez votre propre processus de commande, puis le répertoire de changement obtient reflétée dans le processus du shell.