Sou novo em bash scripts de shell e me deparei com um desafio. Eu sei que posso recarregar meu arquivo ".profile" apenas fazendo:
. .profile
mas estou tentando executar o mesmo em um script bash que estou escrevendo e simplesmente não está funcionando. Alguma ideia? Mais alguma coisa que eu possa fornecer para esclarecer?
obrigado
bash
shell
unix
.bash-profile
Amir Rustamzadeh
fonte
fonte
Respostas:
Tente isso para recarregar seu shell atual:
fonte
source
comando executará o arquivo como um script ... Nos piores casos, se alguém usasse uma atribuição de variável comoMyVar="$foo$MyVar"
em seu bash_profile, entãosource ~/.profile
daria o resultado finalMyVar="$foo$MyVar$MyVar"
, portanto$MyVar
, teria o valor errado posteriormente. (Independentemente de más práticas, basta pedir uma solução alternativa)Tente o seguinte:
fonte
Surgem alguns problemas ao tentar recarregar / arquivo de origem ~ / .profile. [Isso se refere ao Ubuntu linux - em alguns casos, os detalhes dos comandos serão diferentes]
De Anúncios. 1)
Executar isso diretamente no terminal significa que não haverá sub-shell criado. Então você pode usar dois comandos:
ou
Nos dois casos, isso atualizará o ambiente com o conteúdo do arquivo .profile.
Anúncio 2) Você pode iniciar qualquer script bash chamando
ou
No primeiro caso, isso criará um subshell que não afetará as variáveis de ambiente do seu sistema e elas serão visíveis apenas para o processo do subshell. Após concluir o comando subshell, nenhuma das exportações, etc. será aplicada. Este é um erro comum e faz com que muitos desenvolvedores percam muito tempo.
Para que suas alterações aplicadas em seu script tenham efeito no ambiente global, o script deve ser executado com
comando.
Para garantir que seu script não seja executado em um subshel, você pode usar esta função. (Novamente, o exemplo é para o shell do Ubuntu)
Espero que isso elimine alguns dos mal-entendidos comuns! : D Boa Sorte!
fonte
O script bash é executado em um subshell separado. Para que isso funcione, você também precisará obter esse outro script.
fonte
.profile
arquivo da seguinte maneira:. $HOME/.profile
e você precisará iniciar seu script utilizando-o também. Algo como. /path/to/yourscript
Experimentar:
fonte