Jak rozpocząć wszystkie sesje powłoki w katalogu innym niż $ HOME?

53

Kiedy otwieram moją powłokę niezalogowaną w Ubuntu, mój obecny katalog roboczy to /home/user_name(moja $HOMEzmienna środowiskowa), ale chcę to zmienić tak, aby po uruchomieniu terminala znajdowałem się w innym katalogu.

Przeczytałem, że kiedy uruchamiam terminal w Ubuntu, .bashrcplik jest pobierany. Więc dodałem

export HOME=/home/user_name/Documents 

do mojego .bashrcpliku. Teraz, kiedy otwieram terminal, wciąż jestem w /home/user_namekatalogu.

Jak mogę to zmienić?

użytkownik3091069
źródło
czy to pomaga? askubuntu.com/a/75223/212231
Mark Plotnick
3
Warto również rozważyć nie robienie tego. Projekt systemu UNIX nie został przekazany przez przodków za nic, o czym wiesz.
Sean D

Odpowiedzi:

52

Przede wszystkim usuń ten wiersz ze swojego .bashrc. Sposób na zrobienie tego bez zabawy $HOME, ta zmienna zawsze będzie wskazywać na katalog domowy i nie chcesz tego zmieniać, aby twoje powłoki zaczęły się w innym miejscu.

Jestem pewien, że będzie bardziej elegancki sposób na zrobienie tego, ale jako tymczasowe obejście możesz po prostu dodać tę linię do .bashrc:

cd ~/Documents 

Ponieważ ten plik jest odczytywany za każdym razem, gdy uruchamiasz nową powłokę niezalogowaną (otwórz nowy terminal), cdpolecenie zostanie wykonane, a twoje terminale uruchomią się ~/Documentstak, jak chcesz.

terdon
źródło
Zauważ, że wpłynie to na wszystkie niezalogowane powłoki interaktywne (i te logowania, jeśli bashrc pozyskasz z pliku bash_profile) oraz na te nieinteraktywne uruchomione przez sshd.
Stéphane Chazelas
@ StéphaneChazelas Czy jesteś pewien? Zwykle [[ -z "$PS1" ]] && exitu góry znajduje się strażnik, .bashrcktóry powinien temu zapobiec w przypadku sesji nieinteraktywnych.
Martin Ueding
2
@queueoverflow zwykle? W jakim systemie operacyjnym? W jakiej dystrybucji? Nie dotyczy Debiana, SuSe ani CentOS. W rzeczywistości wydaje mi się, że widziałem to tylko na Ubuntu.
terdon
@terdon Widziałem to na Ubuntu i pomyślałem, że to był ogólny przypadek.
Martin Ueding
20

Terminal uruchomi się w katalogu roboczym, który odziedziczy po swoim rodzicu.

Jednak niektóre pozwalają na zastąpienie go za pomocą ustawień konfiguracji.

Za pomocą gnome-terminalmożesz edytować swój profil, zaznacz opcję Uruchom niestandardowe polecenie zamiast mojej powłoki i wykonaj:

sh -c 'cd ~/Documents; exec "${SHELL:-sh}"'
Stéphane Chazelas
źródło
1

Oto co umieściłem w moim ~/.bash_profile:

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

i polegam na tym cały czas. Zasadniczo, kiedy pracuję nad jakimś projektem, utworzę savedla niego główny katalog, a następnie rozpocznie się każda kolejna sesja. Potem, kiedy zmieniam projekty lub cokolwiek, po prostu będę savegdzie indziej.

Znalazłem to pytanie, szukając lepszego sposobu, ale to, co mam, jest dla mnie lepsze niż na stałe zapisanie jednego konkretnego katalogu.

Amos
źródło
Działa to również dobrze w git bash. Pamiętaj tylko, aby zrestartować powłokę bash lub użyć (myślę) „source ~ / .bash_profile” po zmianie pliku.
Tim
0

Dla tych, którzy patrzą na to, gdzie .bashrcjest plik, ogólnie jest to ukryty plik w katalogu domowym.

Znaleźć to:

Otwórz terminal i przejdź do katalogu domowego, a następnie:

ls -al

aby pokazać wszystkie ukryte pliki. Teraz będziesz mógł zobaczyć swój .bashrcplik.

Aby zmienić domyślny katalog

  1. Otwórz .bashrcplik w edytorze tekstu, wprowadzając polecenie:

    gedit .bashrc
  2. Edytuj ten plik, dodając ostatnio swoje polecenie, na przykład:

    cd ~/YourDirectoryName
  3. Zapisz plik i uruchom ponownie terminal.

Shivam
źródło
Pytanie nie pyta, jak edytować .bashrc, on już to zrobił. Twoja odpowiedź jest tylko powtórzeniem odpowiedzi @ terdona sprzed dwóch lat.
Davor Cubranic