Atualizar .profile e .bashrc

0

Eu dividi meus arquivos .profile e .bashrc , assim, com base em vários conselhos que li. Eu tenho um alias bin que eu uso para atualizar meu ambiente depois de alterar .profile e .bashrc para evitar sair e reabrir o shell. No entanto, existem dois problemas atualmente:

  1. Meu $PATH aumentará para cada atualização porque prefixo o padrão $PATH .
  2. Desejo apenas fortune quando inicio um novo shell, não quando o atualizo com bin .

Qual é a maneira mais correta e não agressiva de atualizar meu ambiente sem os efeitos colaterais indesejados? (Copiar e colar o caminho do sistema no meu .profile não é uma opção!)

.profile

# LOTS OF EXPORTS
export ***
export ***
export PATH=.:$HOME/bin:***:$PATH

shopt -s extglob
[ -n "$BASH_VERSION" ] && [ -f "$HOME/.bashrc" ] && . "$HOME/.bashrc"
fortune

.bashrc

# LOTS OF ALIASES
alias ***
alias ***
alias bin='source $HOME/.profile; set +h'

# LOTS OF FUNCTIONS
foo() {}
bar() {}
    
por forthrin 12.05.2018 / 10:04

2 respostas

1

A maneira mais fácil e não-agressiva de atualizar o ambiente é encerrar a sessão atual do shell e iniciar uma nova.

Você também pode iniciar um novo shell de login a partir do shell atual, mas isso pode ter consequências indesejadas, como modificar PATH , mesmo que você já tenha modificado seu PATH (variáveis de ambiente herdadas pelo novo shell, e não redefinir para o que eles teriam sido se você tivesse iniciado um novo shell em um novo terminal).

Você também pode iniciar um novo shell com env -i bash -l , em que env -i limparia o ambiente antes de invocar um novo shell de login bash . Isso pode não ser o mesmo que iniciar um novo shell em um novo terminal, já que o ambiente herdado não seria o mesmo.

    
por 12.05.2018 / 10:14
0

Considere o uso de um teste in-line e exporte seu caminho condicionalmente em .bashrc

[[ $PATH =~ "$HOME/bin" ]] && export PATH="${HOME}/bin:${PATH}"

Quanto ao comando fortune , você pode executá-lo no login, adicionando-o em .bash_profile , que é executado apenas por shells de login. Você pode forçar seu emulador de terminal a iniciar um shell de login nas preferências do aplicativo.

    
por 12.05.2018 / 10:16

Tags