¿Cómo inicio todas las sesiones de shell en un directorio que no sea $ HOME?

53

Cuando abro mi shell sin inicio de sesión en Ubuntu, mi directorio de trabajo actual es /home/user_name(mi $HOMEvariable de entorno), pero quiero cambiar esto de modo que cuando inicio mi terminal esté en otro directorio.

He leído que cuando inicio mi terminal en Ubuntu .bashrcse obtiene un archivo. Entonces agregué

export HOME=/home/user_name/Documents 

a mi .bashrcarchivo Ahora, cuando abro mi terminal, todavía estoy en el /home/user_namedirectorio.

¿Cómo puedo cambiar esto?

usuario3091069
fuente
¿Esto ayuda? askubuntu.com/a/75223/212231
Mark Plotnick
3
También podría valer la pena considerar no hacer esto. El diseño de UNIX no fue transmitido por los antepasados ​​por nada que sepas.
Sean D

Respuestas:

52

En primer lugar, elimine esa línea de su .bashrc. La forma de hacerlo no jugando con $HOMEesa variable siempre apuntará a su directorio de inicio y no querrá cambiar eso solo para que sus shells comiencen en un lugar diferente.

Estoy seguro de que habrá una forma más elegante de hacer esto, pero como solución temporal puede simplemente agregar esta línea a su .bashrc:

cd ~/Documents 

Dado que ese archivo se lee cada vez que inicia un nuevo shell sin inicio de sesión (abra un nuevo terminal), el cdcomando se ejecutará y sus terminales comenzarán ~/Documentscomo desee.

terdon
fuente
Tenga en cuenta que afectará a todos los shells interactivos que no inician sesión (y a los que inician sesión si obtiene su bashrc de su bash_profile) y los no interactivos iniciados por sshd.
Stéphane Chazelas
@ StéphaneChazelas ¿Estás seguro? Por lo general, hay un [[ -z "$PS1" ]] && exitprotector en la parte superior .bashrcque debería evitar esto para las sesiones no interactivas.
Martin Ueding
2
@queueoverflow por lo general? ¿En que sistema operativo? ¿En qué distribución? No en Debian, SuSe o CentOS. De hecho, creo que solo he visto eso en Ubuntu.
terdon
@terdon Lo he visto en Ubuntu y pensé que ese era el caso general.
Martin Ueding
20

El terminal comenzará en el directorio de trabajo que hereda de su padre.

Sin embargo, algunos permiten anularlo mediante la configuración.

Con gnome-terminal, puede editar su perfil, marque ejecutar un comando personalizado en lugar de mi shell y hacerlo:

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

Esto es lo que puse en mi ~/.bash_profile:

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

y confío en esto todo el tiempo. Básicamente, cuando estoy trabajando en algún proyecto, haré saveun directorio principal para él y luego cada sesión posterior comienza allí. Luego, cuando cambie los proyectos o lo que sea, simplemente iré a saveotro lado.

Encontré esta pregunta cuando buscaba una mejor manera, pero lo que tengo es preferible para mí que codificar un directorio en particular.

amos
fuente
Esto también funciona bien en git bash. Solo recuerde reiniciar el shell bash o use (creo) "source ~ / .bash_profile" después de cambiar el archivo.
Tim
0

Para aquellos que buscan dónde está el .bashrcarchivo, generalmente es un archivo oculto en el directorio de inicio.

Para encontrarlo:

Abra su terminal y vaya al directorio de inicio, y luego:

ls -al

para mostrar todos los archivos ocultos. Ahora podrá ver su .bashrcarchivo.

Para cambiar el directorio predeterminado

  1. Abra el .bashrcarchivo en su editor de texto ingresando el comando:

    gedit .bashrc
  2. Edite este archivo agregando su comando en último lugar, como:

    cd ~/YourDirectoryName
  3. Guarde el archivo y reinicie el terminal.

Shivam
fuente
La pregunta no pregunta cómo editar .bashrc, ya lo ha hecho. Y su respuesta es solo una repetición de la respuesta de @terdon de dos años antes.
Davor Cubranic