로케일을 변경하는 쉘 스크립트가 효과가 없습니다.

로케일을 변경하는 쉘 스크립트가 효과가 없습니다.

내 로케일을 전환하는 간단한 스크립트를 작성했습니다. 콘솔에 한줄씩 작성해서 실행하면 잘 되는데, 아니면 .bashrc.

그러나 sudo를 사용하거나 사용하지 않고 스크립트를 실행할 때 눈에 띄는 효과는 전혀 없습니다. (지역 설정은 변경되지 않습니다)

문제는 왜인가?
내 스크립트가 잘못되었거나 뭔가 다른 것을 놓치고 있습니까?

원천:

#!/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!"

실행 단계와 에코를 얻었 Language set지만 그게 전부입니다. 나도 그것을 시도했습니다 #!/bin/sh.


운영 체제 정보:

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

Kernel:    3.13.0-042stab103.6

답변1

현재 셸에 변경 사항을 적용하려면 스크립트를 "실행"하는 것이 아니라 "가져와야" 합니다. 따라서 스크립트 이름이 "script.sh"인 경우 변경 사항 ./script.sh은 그대로 실행되지 않고 현재 세션에 적용됩니다 .. ./script.sh

답변2

정상인 것 같습니다. 이 변경 사항은 로컬 셸 세션(즉, 스크립트를 실행하는 세션)에만 적용됩니다. 상위 셸은 영향을 받지 않습니다.

현재 셸에서 명령을 실행하면 현재 셸에 영향을 미치고, .bashrc에 넣으면 시작 시 현재 셸에도 영향을 줍니다.

그러나 이를 스크립트에 넣으면 스크립트를 현재 스크립트의 하위로 실행하기 위해 새 셸이 생성되므로 해당 환경을 수정해도 상위 스크립트에는 영향을 미치지 않습니다.

답변3

나는 같은 문제가 있었고 마침내 ~/.bashrc의 별칭을 사용하여 해결했습니다.

alias chlang="export LANG=en_US.utf8;export LANGUAGE=en_US.utf8;export LC_ALL=en_US.utf8"

관련 정보