Shell Script para alterar a localidade não tem efeito

0

Eu escrevi um script simples para mudar minha localidade. Se eu escrever cada linha no console e executá-lo, ele funciona sem nenhum problema ou se eu colocá-lo em .bashrc .

No entanto, quando executo o script com sudo ou sem ele não tem nenhum efeito perceptível. (locale permanece o mesmo)

A questão é: por que isso acontece?
Meu roteiro está errado ou estou sentindo falta de algo diferente?

Fonte:

#!/bin/bash
set -x
LANG=en_US.utf8
LANGUAGE=en_US.utf8
LC_ALL=en_US.utf8
export LANG
export LANGUAGE
export LC_ALL
echo "Language set!"

Estou recebendo as etapas de execução e o Language set echo, mas é sobre isso. Eu também tentei #!/bin/sh .

Informações do SO:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"

Kernel:    3.13.0-042stab103.6
    
por deW1 04.09.2015 / 14:07

3 respostas

5

Para aplicar as alterações ao seu shell atual, é necessário "procurá-lo" e não "executar" seu script. Portanto, se o seu script for chamado de "script.sh", em vez de executá-lo como ./script.sh , digite-o com . ./script.sh e suas alterações serão aplicadas à sessão atual.

    
por 04.09.2015 / 14:23
5

Parece normal. A alteração é aplicada somente na sessão de shell local (ou seja, aquela que executa o script), o shell pai não é afetado.

Se você executar o comando em seu shell atual, você está afetando seu shell atual, se você o colocar em seu .bashrc, ele também afetará seu shell atual na inicialização.

Mas quando você o coloca em um script, um novo shell é gerado para executar o script como um filho do seu script atual, portanto, qualquer modificação do ambiente não afetará seus pais.

    
por 04.09.2015 / 14:13
2

Eu tive o mesmo problema e finalmente resolvi usando um alias em meu ~ / .bashrc

alias chlang="export LANG=en_US.utf8;export LANGUAGE=en_US.utf8;export LC_ALL=en_US.utf8"
    
por 04.09.2015 / 14:21