Come posso avviare tutte le sessioni della shell in una directory diversa da $ HOME?


53

Quando apro la mia shell senza login in Ubuntu, la mia directory di lavoro attuale è /home/user_name(la mia $HOMEvariabile di ambiente), ma voglio cambiarla in modo tale che quando avvio il mio terminale mi trovo in un'altra directory.

Ho letto che quando avvio il mio terminale in Ubuntu .bashrcviene fornito un file. Quindi ho aggiunto

export HOME=/home/user_name/Documents 

al mio .bashrcfile. Ora, quando apro il mio terminale, sono ancora nella /home/user_namedirectory.

Come posso cambiarlo?



3
Potrebbe anche valere la pena considerare di non farlo. Il progetto di UNIX non è stato tramandato dagli antenati per nulla che tu sappia.
Sean D,

Risposte:


52

Prima di tutto, rimuovi quella linea dal tuo .bashrc. Il modo per non farlo giocando $HOME, quella variabile punterà sempre alla tua home directory e non vorrai cambiarla solo così le tue shell iniziano in un posto diverso.

Sono sicuro che ci sarà un modo più elegante per farlo, ma come soluzione temporanea puoi semplicemente aggiungere questa linea al tuo .bashrc:

cd ~/Documents 

Poiché quel file viene letto ogni volta che avvii una nuova shell non di accesso (apri un nuovo terminale), il cdcomando verrà eseguito e i tuoi terminali inizieranno ~/Documentscome desideri.


Si noti che influenzerà tutte le shell interattive non di accesso (e quelle di accesso se si procede da sorgente bashrc dal proprio bash_profile) e quelle non interattive avviate da sshd.
Stéphane Chazelas,

@ StéphaneChazelas Sei sicuro? Di solito c'è una [[ -z "$PS1" ]] && exitguardia nella parte superiore .bashrcche dovrebbe impedirlo per le sessioni non interattive.
Martin Ueding,

2
@queueoverflow di solito? In quale sistema operativo? In quale distribuzione? Non su Debian, SuSe o CentOS. In effetti, penso di averlo mai visto su Ubuntu.
terdon

@terdon L'ho visto su Ubuntu e ho pensato che fosse il caso generale.
Martin Ueding,

20

Il terminale verrà avviato nella directory di lavoro che eredita dal suo genitore.

Tuttavia, alcuni consentono di sovrascriverlo tramite le impostazioni di configurazione.

Con gnome-terminal, puoi modificare il tuo profilo, selezionare Esegui un comando personalizzato anziché la mia shell e farlo:

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

1

Ecco cosa ho inserito nel mio ~/.bash_profile:

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

e mi affido sempre a questo. Fondamentalmente, quando sto lavorando su qualche progetto, farò saveuna directory principale per esso e quindi ogni sessione successiva inizia lì. Quindi, quando cambio progetti o altro, vado saveda qualche altra parte.

Ho trovato questa domanda quando cercavo un modo migliore, ma quello che ho è preferibile per me piuttosto che hardcoding di una directory particolare.


Funziona bene anche con Git Bash. Basta ricordare di riavviare la shell bash o utilizzare (credo) "source ~ / .bash_profile" dopo aver modificato il file.
Tim

0

Per quelli che stanno guardando dove si trova il .bashrcfile, generalmente è un file nascosto nella home directory.

Per trovarlo:

Apri il tuo terminale e vai alla home directory, quindi:

ls -al

per mostrare tutti i file nascosti. Ora sarai in grado di vedere il tuo .bashrcfile.

Per modificare la directory predefinita

  1. Apri il .bashrcfile nel tuo editor di testo inserendo il comando:

    gedit .bashrc
  2. Modifica questo file aggiungendo il tuo comando per ultimo, come:

    cd ~/YourDirectoryName
  3. Salvare il file e riavviare il terminale.


La domanda non chiede come modificare .bashrc, l'ha già fatto. E la tua risposta è solo una ripetizione della risposta di @ terdon di due anni prima.
Davor Cubranic,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.