Как запустить все сеансы оболочки в каталоге, отличном от $ HOME?


53

Когда я открываю свою оболочку не для входа в систему в Ubuntu, мой текущий рабочий каталог /home/user_name(моя $HOMEпеременная окружения), но я хочу изменить это так, чтобы при запуске моего терминала я находился в каком-то другом каталоге.

Я прочитал, что когда я запускаю свой терминал в Ubuntu, .bashrcфайл создается . Итак, я добавил

export HOME=/home/user_name/Documents 

в мой .bashrcфайл. Теперь, когда я открываю свой терминал, я все еще в /home/user_nameкаталоге.

Как я могу изменить это?



3
Возможно, стоит подумать не делать этого. Проект UNIX не был передан предками ни за что, вы знаете.
Шон Д

Ответы:


52

Прежде всего, удалите эту строку из вашего .bashrc. Способ сделать это - не поиграть $HOME, эта переменная всегда будет указывать на ваш домашний каталог, и вы не захотите менять это просто так, чтобы ваши оболочки начинались в другом месте.

Я уверен, что будет более элегантный способ сделать это, но в качестве временного обходного пути вы можете просто добавить эту строку в ваш .bashrc:

cd ~/Documents 

Поскольку этот файл читается каждый раз, когда вы запускаете новую оболочку, не входящую в систему (открываете новый терминал), cdкоманда будет выполнена, и ваши терминалы будут запускаться по ~/Documentsвашему желанию.


Обратите внимание, что это повлияет на все не входящие в систему интерактивные оболочки (и входящие в систему, если вы используете исходный код bashrc из bash_profile) и неинтерактивные, запущенные sshd.
Стефан Шазелас

@ StéphaneChazelas Вы уверены? Обычно [[ -z "$PS1" ]] && exitнаверху есть защитник, .bashrcкоторый должен предотвращать это для неинтерактивных сеансов.
Мартин Юдинг

2
@queueoverflow обычно? В какой операционной системе? В каком распределении? Не на Debian, SuSe или CentOS. Фактически, я думаю, что когда-либо видел это только в Ubuntu.
Тердон

@terdon Я видел это на Ubuntu и думал, что это общий случай.
Мартин Юдинг

20

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

Однако некоторые позволяют переопределить его через настройки конфигурации.

С помощью gnome-terminalвы можете отредактировать свой профиль, поставьте галочку, выполняя пользовательскую команду вместо моей оболочки, и сделайте это:

sh -c 'cd ~/Documents; exec "${SHELL:-sh}"'

1

Вот что я положил в свой ~/.bash_profile:

alias curDir="pwd | sed -e 's/ /\\ /'"
alias save='echo `curDir` > ~/.saved_dir'
alias saved='cd `cat ~/.saved_dir`'
saved

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

Я нашел этот вопрос, когда искал лучший способ, но то, что у меня есть, для меня предпочтительнее, чем жесткое программирование одного конкретного каталога.


Это хорошо работает и в git bash. Просто не забудьте перезапустить оболочку bash или использовать (я думаю) «source ~ / .bash_profile» после изменения файла.
Тим

0

Для тех, кто смотрит, где находится .bashrcфайл, обычно это скрытый файл в домашнем каталоге.

Чтобы найти это:

Откройте свой терминал и перейдите в домашний каталог, а затем:

ls -al

показать все скрытые файлы. Теперь вы сможете увидеть свой .bashrcфайл.

Для того, чтобы изменить каталог по умолчанию

  1. Откройте .bashrcфайл в текстовом редакторе, введя команду:

    gedit .bashrc
  2. Отредактируйте этот файл, добавив свою команду в конце, например:

    cd ~/YourDirectoryName
  3. Сохраните файл и перезагрузите терминал.


Вопрос не спрашивает, как редактировать .bashrc, он уже сделал это. И ваш ответ - это просто повторение ответа @ terdon двумя годами ранее.
Давор Кубраник
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.