Як запустити всі сеанси оболонки в каталозі, окрім $ 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éphane Chazelas

@ StéphaneChazelas Ви впевнені? Зазвичай [[ -z "$PS1" ]] && exitна вершині є охорона, .bashrcяка повинна перешкоджати цьому для неінтерактивних сесій.
Мартін Удінг

2
@queueoverflow зазвичай? У якій операційній системі? У якому розподілі? Не на Debian, SuSe або CentOS. Насправді, я думаю, я бачив це лише в Ubuntu.
terdon

@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.