Comment démarrer toutes les sessions shell dans un répertoire autre que $ HOME?

53

Lorsque j'ouvre mon shell non connecté sous Ubuntu, mon répertoire de travail actuel est /home/user_name(ma $HOMEvariable d'environnement), mais je souhaite le modifier pour que, lorsque je démarre mon terminal, je me trouve dans un autre répertoire.

J'ai lu que lorsque je démarre mon terminal sous Ubuntu, un .bashrcfichier est créé. Alors j'ai ajouté

export HOME=/home/user_name/Documents 

à mon .bashrcdossier. Maintenant, quand j'ouvre mon terminal, je suis toujours dans le /home/user_namerépertoire.

Comment puis-je changer cela?

utilisateur3091069
la source
est-ce que cela aide? askubuntu.com/a/75223/212231
Mark Plotnick
3
Cela pourrait également valoir la peine d’envisager de ne pas le faire. La conception d'UNIX n'a ​​pas été transmise par les ancêtres pour rien que vous sachiez.
Sean D

Réponses:

52

Tout d’abord, supprimez cette ligne de votre .bashrc. La façon de le faire ne joue pas avec $HOME, cette variable pointe toujours sur votre répertoire personnel et vous ne voulez pas le changer pour que vos coques commencent à un endroit différent.

Je suis sûr qu'il y aura un moyen plus élégant de le faire, mais comme solution temporaire, vous pouvez simplement ajouter cette ligne à votre .bashrc:

cd ~/Documents 

Étant donné que ce fichier est lu à chaque fois que vous démarrez un nouveau shell sans connexion (ouvrez un nouveau terminal), la cdcommande sera exécutée et vos terminaux commenceront à ~/Documentsvotre guise.

terdon
la source
Notez que cela affectera tous les shells interactifs non-login (et ceux qui se connectent si vous utilisez votre bashrc depuis votre bash_profile) et ceux qui ne sont pas interactifs démarrés par sshd.
Stéphane Chazelas
@ StéphaneChazelas Etes-vous sûr? Habituellement, il y a un [[ -z "$PS1" ]] && exitgardien en haut de l' .bashrcécran qui devrait empêcher cela pour les sessions non interactives.
Martin Ueding
2
@queueoverflow habituellement? Dans quel système d'exploitation? Dans quelle distribution? Pas sur Debian, SuSe ou CentOS. En fait, je pense que je n'ai jamais vu cela que sur Ubuntu.
terdon
@terdon je l'ai vu sur Ubuntu et je pensais que c'était le cas général.
Martin Ueding
20

Le terminal démarrera dans le répertoire de travail hérité de son parent.

Cependant, certains permettent de le remplacer via les paramètres de configuration.

Avec gnome-terminal, vous pouvez éditer votre profil, cochez Exécuter une commande personnalisée à la place de mon shell et le rendre:

sh -c 'cd ~/Documents; exec "${SHELL:-sh}"'
Stéphane Chazelas
la source
1

Voici ce que j'ai mis dans mon ~/.bash_profile:

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

et je compte sur cela tout le temps. En gros, quand je travaille sur un projet, je vais créer saveun répertoire principal et chaque session suivante commence là. Ensuite, lorsque je changerai de projet ou quoi que ce soit, je me contenterai d' saveun autre endroit.

J'ai trouvé cette question lorsque je cherchais un meilleur moyen, mais ce que j'ai est préférable pour moi que de coder en dur un répertoire particulier.

Amos
la source
Cela fonctionne aussi bien dans Git Bash. Rappelez-vous juste de redémarrer le shell bash ou utilisez (je pense) "source ~ / .bash_profile" après avoir changé le fichier.
Tim
0

Pour ceux qui cherchent où se trouve le .bashrcfichier, il s’agit généralement d’un fichier caché dans le répertoire personnel.

Pour le trouver:

Ouvrez votre terminal et accédez au répertoire de base, puis:

ls -al

pour afficher tous les fichiers cachés. Vous pourrez maintenant voir votre .bashrcfichier.

Pour changer le répertoire par défaut

  1. Ouvrez le .bashrcfichier dans votre éditeur de texte en entrant la commande:

    gedit .bashrc
  2. Editez ce fichier en ajoutant votre commande en dernier, comme:

    cd ~/YourDirectoryName
  3. Enregistrez le fichier et redémarrez le terminal.

Shivam
la source
La question ne demande pas comment éditer .bashrc, il l'a déjà fait. Et votre réponse est juste une répétition de la réponse de @ terdon deux ans plus tôt.
Davor Cubranic