Как я могу заставить свою оболочку всегда запускаться в определенном каталоге, который не является моим домашним каталогом

я пытался поставить

cd /Users/my_name/my_directory/structure

в обоих .bashrcи .bash_login, но ни один из них не работает, т.е. когда я открываю новое окно терминала, я нахожусь в своем домашнем каталоге (/Users/my_name/).

Никаких сообщений об ошибках, просто не cd'd в каталог, как хотелось бы, при запуске нового окна терминала.

Ответы (2)

Как упомянул Джерри, .bashrcне читается оболочками входа в систему. Новые вкладки по умолчанию являются оболочками для входа в Терминал, а iTerm 2. .bash_loginчитается только в том случае, если нет файла .bash_profile.

Вы также можете добавить cdкоманду в .bash_profile.

Прежде всего, если вы еще не используете iTerm2, я предлагаю вам загрузить это бесплатное программное обеспечение в качестве замены Terminal.app.

Среди многих других дополнительных функций в настройках iTerm вы можете настроить рабочий каталог по умолчанию для новых оболочек. Вы найдете эти настройки в Профили — Общие.

Рабочий каталог iTerm по умолчанию

Преимущество здесь в том, что вы можете установить разные варианты поведения для открытия нового окна, открытия новой вкладки или даже создания новой разделенной панели. Например, мне нравится оставаться в текущем рабочем каталоге при добавлении разделенной панели.

Вы также можете сделать это в своем сценарии запуска (хотя я нахожу решение iTerm более чистым или, по крайней мере, более гибким), но тогда я советую вам использовать его ~/.bash_profileвместо этого.

~/.bashrcне запускается автоматически при открытии нового окна оболочки и ~/.bash_loginзапускается только в том случае, если его нет ~/.bash_profile.

Я всегда получаю свой .bashrc из своего .bash_profile, поэтому мне не нужно помнить, что откуда вызывается.
@CajunLuke Я делаю что-то очень похожее: github.com/gerryvdm/dotfiles
Если изменение поля «Каталог» рабочего каталога не дало результата, вам, вероятно, нужно переключить Command с «Команда» на «Оболочка входа» ( исходный код ).