Обычно ваш .bashrc запускается:
# If not running interactively, don't do anything
[ -z "$PS1" ] && return
Поскольку ваш скрипт не имеет набора PS1 (потому что он не является интерактивным), он не сбрасывает путь, потому что он выходит раньше. Чтобы продемонстрировать, измените свой скрипт:
#!/bin/bash
chmod a+x ~/.bashrc
PS1='$ '
source ~/.bashrc
теперь это позволит вашим скриптам работать с новым .bashrc. Примечание: как только ваш скрипт выйдет, env будет настроен на то, что было до начала сценария. Изменения будут отображаться при следующем запуске терминала.