방금 LaTEX를 설치했고 $PATH
명령을 사용할 수 있도록 변수에 경로를 추가해야 합니다. /usr/local/texlive/2015/bin/x86_64-linux
PATH에 path()를 추가하려고 했는데 .bash_profile
터미널을 다시 시작하면 echo $PATH
추가 내용이 표시되지 않습니다. 내가 추가한 관련 코드:
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/usr/local/texlive/2015/bin/x86_64-linux
export PATH
경로를 추가하려고 시도했지만 /etc/profile
성공하지 못했습니다. 어떤 조언이라도 대단히 감사하겠습니다.
답변1
귀하의 코드가 정확합니다. 위치가 정확할 수도 있고 정확하지 않을 수도 있습니다. .bash_profile
로그인 쉘이 bash이고 텍스트 모드(텍스트 콘솔 또는 네트워크를 통해)로 로그인하는 경우 이 정보를 읽습니다. 그러나 대부분의 시스템에서 그래픽 프롬프트에 로그인하면 .bash_profile
읽는 대신 .profile
읽는 중입니다. 중복을 피하기 위해 모든 환경 변수 할당을 입력 .profile
하고 다음 코드를 사용하여 .bash_profile
대화형 로그인 셸과 비대화형 로그인 셸 모두에 대해 올바른 작업을 수행하는 것이 좋습니다 .
. ~/.profile
case $- in *i*) . ~/.bashrc;; esac
PATH
에 환경 변수 정의를 넣지 마십시오 .bashrc
. 이는 프로그램이 터미널에서 호출되는 경우에만 작동합니다. 예를 들어 편집기가 LaTeX를 자동으로 실행하려고 하면 작동하지 않습니다.
.profile
(또는 .bash_profile
)은 로그인한 상태에서만 읽기 때문에 로그아웃했다가 다시 로그인할 때까지 설정이 적용되지 않습니다. 터미널 PATH=…
에 명령을 입력(또는 붙여넣기)하여 터미널(해당 터미널에서 시작된 프로그램 포함)에 설정을 적용할 수 있습니다 . 일부 데스크탑 환경 및 창 관리자에서는 환경 변수를 수정할 수 있습니다. 이를 수행하는 방법은 데스크탑 환경에 따라 다릅니다.
답변2
.bash_profile
로그인 중에는 읽기 전용이며, 터미널을 여는 것은 로그인이 아닙니다. .bashrc
대화형 셸이 읽을 수 있도록 코드 에 이를 추가해야 할 수도 있습니다 .
이 문제에 대한 자세한 토론은 다음에서 볼 수 있습니다.이 문제
답변3
Gilles의 답변은 로그인이 아닌 대화식 쉘을 고려하지 않습니다.
요약:
대화형 환경과 비대화형 환경 모두에 PATH를 추가해야 하는 경우 다음과 같은 몇 가지 시나리오를 고려해야 합니다.
- 비로그인 대화형 bash 쉘
.profile 또는 .bash_profile이 아닌 .bashrc만 읽습니다.
- 대화형 bash 셸에 로그인
.profile 읽기(.bashrc는 기본적으로 .profile에서 읽혀집니다)
또는 .bash_profile(있는 경우)
- 비대화형 셸에 로그인
읽기 전용 .profile(또는 .bash_profile(있는 경우))
.bashrc는 기본적으로 읽히지 않으며 .profile에서 .bashrc를 검색하면 아래와 같이 true가 반환되지 않아야 합니다.
if [ -n '$BASH_VERSION'];
- 비로그인 비대화형 쉘
기본적으로 아무것도 읽히지 않습니다.
참고: 내 답변이 완전히 정확하지 않을 수 있으므로 만일의 경우를 대비하여 여기에 작성하겠습니다.
원천:
- https://askubuntu.com/questions/247738/why-is-etc-profile-not-invoked-for-non-login-shells
- 완전히 정확하지는 않습니다. 잘못된 부분은 비대화형 쉘이 호출하지 않는다는 것입니다.
.bashrc
- 완전히 정확하지는 않습니다. 잘못된 부분은 비대화형 쉘이 호출하지 않는다는 것입니다.
- https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html
더:
테스트 로그인 비대화형 상황
비대화형으로 로그인했을 때 .profile이 어떻게 작동하는지 테스트하려면 if else 문 아래 파일에 일부 에코를 추가하면 됩니다.
~/.profile
if [ -n '$BASH_VERSION'];
then
echo test > test.txt
else
echo bash version missing > test.txt
fi