Como inicio todas as sessões de shell em um diretório que não seja $ HOME?


53

Quando abro meu shell de não login no Ubuntu, meu diretório de trabalho atual é /home/user_name(minha $HOMEvariável de ambiente), mas quero mudar isso para que, quando inicio meu terminal, esteja em outro diretório.

Eu li que quando inicio meu terminal no Ubuntu, um .bashrcarquivo é originado. Então eu adicionei

export HOME=/home/user_name/Documents 

para o meu .bashrcarquivo. Agora, quando abro meu terminal, ainda estou no /home/user_namediretório.

Como posso mudar isso?



3
Também pode valer a pena considerar não fazer isso. O design do UNIX não foi transmitido pelos antepassados ​​por nada que você saiba.
Sean

Respostas:


52

Antes de tudo, remova essa linha do seu .bashrc. A maneira de fazer isso, não jogando com $HOME, essa variável sempre apontará para o seu diretório pessoal e você não deseja alterar isso apenas para que seus shells iniciem em um local diferente.

Tenho certeza de que haverá uma maneira mais elegante de fazer isso, mas como solução temporária, você pode simplesmente adicionar esta linha ao seu .bashrc:

cd ~/Documents 

Como esse arquivo é lido toda vez que você inicia um novo shell sem login (abra um novo terminal), o cdcomando será executado e seus terminais serão iniciados ~/Documentsconforme desejado.


Observe que isso afetará todos os shells interativos que não são de login (e os que fazem login se você usar o bashrc em seu bash_profile) e os shells não interativos iniciados pelo sshd.
Stéphane Chazelas

@ StéphaneChazelas Você tem certeza? Geralmente, há um [[ -z "$PS1" ]] && exitguarda no topo do .bashrcque deve impedir isso em sessões não interativas.
Martin Ueding

2
@queueoverflow normalmente? Em qual sistema operacional? Em qual distribuição? Não no Debian, SuSe ou CentOS. Na verdade, acho que só vi isso no Ubuntu.
terdon

@terdon Eu vi no Ubuntu e pensei que era o caso geral.
Martin Ueding

20

O terminal começará no diretório de trabalho que herda de seu pai.

No entanto, alguns permitem substituí-lo através das definições de configuração.

Com gnome-terminal, você pode editar seu perfil, marque executar um comando personalizado em vez do meu shell e faça-o:

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

1

Aqui está o que eu coloquei no meu ~/.bash_profile:

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

e eu confio nisso o tempo todo. Basicamente, quando estou trabalhando em algum projeto, vou criar saveum diretório principal e, em seguida, todas as sessões subsequentes começam lá. Então, quando eu mudar de projeto ou o que for, vou savepara outro lugar.

Encontrei essa pergunta ao procurar uma maneira melhor, mas o que tenho é preferível a mim do que codificar um diretório em particular.


Isso funciona bem no git bash também. Lembre-se de reiniciar o shell bash ou use (eu acho) "source ~ / .bash_profile" depois de alterar o arquivo.
Tim

0

Para aqueles que procuram onde está o .bashrcarquivo, geralmente é um arquivo oculto no diretório inicial.

Para encontrar isso:

Abra seu terminal e vá para o diretório inicial e, em seguida:

ls -al

para mostrar todos os arquivos ocultos. Agora você poderá ver seu .bashrcarquivo.

Para alterar o diretório padrão

  1. Abra o .bashrcarquivo no seu editor de texto digitando o comando:

    gedit .bashrc
  2. Edite este arquivo adicionando seu comando por último, como:

    cd ~/YourDirectoryName
  3. Salve o arquivo e reinicie o terminal.


A pergunta não pergunta como editar .bashrc, ele já fez. E sua resposta é apenas uma repetição da resposta de @ terdon de dois anos antes.
Davor Cubranic
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.