Wie starte ich alle Shell-Sitzungen in einem anderen Verzeichnis als $ HOME?


53

Wenn ich meine Shell ohne Anmeldung in Ubuntu öffne, ist mein aktuelles Arbeitsverzeichnis /home/user_name(meine $HOMEUmgebungsvariable), aber ich möchte dies so ändern, dass ich mich beim Starten meines Terminals in einem anderen Verzeichnis befinde.

Ich habe gelesen, dass beim Starten meines Terminals in Ubuntu eine .bashrcDatei bezogen wird. Also habe ich hinzugefügt

export HOME=/home/user_name/Documents 

zu meiner .bashrcAkte. Wenn ich jetzt mein Terminal öffne, bin ich immer noch im /home/user_nameVerzeichnis.

Wie kann ich das ändern?



3
Es könnte sich auch lohnen, darüber nachzudenken, dies nicht zu tun. Das Design von UNIX wurde von den Vorfahren nicht umsonst weitergegeben.
Sean D

Antworten:


52

Entfernen Sie zuerst diese Linie von Ihrem .bashrc. Wenn Sie dies nicht durch Spielen tun, zeigt diese $HOMEVariable immer auf Ihr Ausgangsverzeichnis, und Sie möchten dies nicht ändern, nur damit Ihre Shells an einer anderen Stelle beginnen.

Ich bin mir sicher, dass es eine elegantere Möglichkeit geben wird, aber als vorübergehende Lösung können Sie diese Zeile einfach zu Ihrer hinzufügen .bashrc:

cd ~/Documents 

Da diese Datei jedes Mal gelesen wird, wenn Sie eine neue Nicht-Login-Shell starten (ein neues Terminal öffnen), wird der cdBefehl ausgeführt und Ihre Terminals beginnen an der ~/Documentsvon Ihnen gewünschten Stelle.


Beachten Sie, dass dies alle nicht-interaktiven Shells betrifft (und Login-Shells, wenn Sie Ihren bashrc aus Ihrem bash_profile beziehen) und die nicht-interaktiven, die von sshd gestartet wurden.
Stéphane Chazelas

@ StéphaneChazelas Bist du sicher? Normalerweise befindet sich [[ -z "$PS1" ]] && exitam oberen Rand eine Schutzvorrichtung, die .bashrcdies bei nicht interaktiven Sitzungen verhindern sollte.
Martin Ueding

2
@queueoverflow normalerweise? In welchem ​​Betriebssystem? In welcher Distribution? Nicht unter Debian, SuSe oder CentOS. Tatsächlich denke ich, dass ich das nur auf Ubuntu gesehen habe.
Terdon

@terdon Ich habe es auf Ubuntu gesehen und dachte, das sei der allgemeine Fall.
Martin Ueding

20

Das Terminal wird in dem Arbeitsverzeichnis gestartet, das es von seinem Elternverzeichnis erbt.

Einige erlauben es jedoch, sie über Konfigurationseinstellungen zu überschreiben.

Mit gnome-terminalkönnen Sie Ihr Profil bearbeiten, einen benutzerdefinierten Befehl anstelle meiner Shell ausführen und Folgendes ausführen :

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

1

Folgendes habe ich in mein eingefügt ~/.bash_profile:

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

und ich verlasse mich die ganze Zeit darauf. Grundsätzlich, wenn ich an einem Projekt arbeite, werde ich saveein Hauptverzeichnis dafür erstellen und dann beginnt jede nachfolgende Sitzung dort. Wenn ich dann Projekte ändere oder was auch immer, werde ich einfach savewoanders sein.

Ich habe diese Frage auf der Suche nach einem besseren Weg gefunden, aber was ich habe, ist mir vorzuziehen, als ein bestimmtes Verzeichnis fest zu codieren.


Dies funktioniert auch gut in Git Bash. Denken Sie daran, die Bash-Shell neu zu starten oder (glaube ich) "source ~ / .bash_profile" zu verwenden, nachdem Sie die Datei geändert haben.
Tim

0

Für diejenigen, die schauen, wo sich die .bashrcDatei befindet, ist es im Allgemeinen eine versteckte Datei im Home-Verzeichnis.

Es zu finden:

Öffnen Sie Ihr Terminal und wechseln Sie in das Basisverzeichnis. Gehen Sie dann wie folgt vor:

ls -al

um alle versteckten Dateien anzuzeigen. Jetzt können Sie Ihre .bashrcDatei sehen.

Um das Standardverzeichnis zu ändern

  1. Öffnen Sie die .bashrcDatei in Ihrem Texteditor, indem Sie den folgenden Befehl eingeben:

    gedit .bashrc
  2. Bearbeiten Sie diese Datei, indem Sie Ihren Befehl in last hinzufügen, wie zum Beispiel:

    cd ~/YourDirectoryName
  3. Speichern Sie die Datei und starten Sie das Terminal neu.


Die Frage ist nicht, wie man .bashrc bearbeitet, er hat es bereits getan. Und Ihre Antwort ist nur eine Wiederholung der Antwort von @ terdon aus zwei Jahren zuvor.
Davor Cubranic
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.