요약:

요약:

방금 LaTEX를 설치했고 $PATH명령을 사용할 수 있도록 변수에 경로를 추가해야 합니다. /usr/local/texlive/2015/bin/x86_64-linuxPATH에 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를 추가해야 하는 경우 다음과 같은 몇 가지 시나리오를 고려해야 합니다.

  1. 비로그인 대화형 bash 쉘

.profile 또는 .bash_profile이 아닌 .bashrc만 읽습니다.

  1. 대화형 bash 셸에 로그인

.profile 읽기(.bashrc는 기본적으로 .profile에서 읽혀집니다)

또는 .bash_profile(있는 경우)

  1. 비대화형 셸에 로그인

읽기 전용 .profile(또는 .bash_profile(있는 경우))

.bashrc는 기본적으로 읽히지 않으며 .profile에서 .bashrc를 검색하면 아래와 같이 true가 반환되지 않아야 합니다.

if [ -n '$BASH_VERSION'];

  1. 비로그인 비대화형 쉘

기본적으로 아무것도 읽히지 않습니다.


참고: 내 답변이 완전히 정확하지 않을 수 있으므로 만일의 경우를 대비하여 여기에 작성하겠습니다.


원천:

  1. https://askubuntu.com/questions/247738/why-is-etc-profile-not-invoked-for-non-login-shells
    • 완전히 정확하지는 않습니다. 잘못된 부분은 비대화형 쉘이 호출하지 않는다는 것입니다..bashrc
  2. https://www.gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html

더:

  1. 로그인/비로그인 및 대화형/비대화형 쉘

테스트 로그인 비대화형 상황

비대화형으로 로그인했을 때 .profile이 어떻게 작동하는지 테스트하려면 if else 문 아래 파일에 일부 에코를 추가하면 됩니다.

~/.profile

if [ -n '$BASH_VERSION'];
then
    echo test > test.txt
else
    echo bash version missing > test.txt
fi

관련 정보