Не надо нигде делать статического доступа к mutable объектам.

Мы шагнули в прогрессивный мир ООП и применили паттерн "Команда". Теперь давайте применим паттерн "Разделяемое состояние".

Давайте сделаем класс ShellState, например. Пусть в нем хранятся всякие состояния, в т.ч. текущая директория. При инициализации инстанса шелла создадим инстанс ShellState. Далее, при заполнении списка команд (тоже не статического, как вы уже поняли) будем передавать в конструкторы команд инстанс ShellState. Так у всех команд появится ссылка на общий ShellState. Это и есть разделяемое состояние.