$ HOME / bin 디렉토리가 $ PATH에 없습니다. 안에 다음과 같이 ~/.profile내 개인을로드

내 안에 다음과 같이 ~/.profile내 개인을로드 해야하는 마지막 블록 bin/ directory이 있습니다.

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

그러나로드되지 않은 것 같습니다.

echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

왜 이것이 작동하지 않습니까? (내 껍질은 bash입니다.)

티거 편집

echo $0 => bash

echo $HOME => /home/student

whoami => student

less /etc/*-release =>
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"


답변

상단에서 ~/.profile:

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

따라서 ( bash쉘로 사용 하는 경우 ) 시스템 중 하나 ~/.bash_profile이거나 추측하고 있습니다 ~/.bash_login. 하나를 선택하고 다음을 포함하도록 편집하십시오.

export PATH=$PATH:$HOME/bin

그런 다음 저장 및 source ~/.bash_login/ 또는 로그 아웃 한 후 다시 로그인하십시오.

편집 :

당신은 그 두 말을 ~/.bash_profile하고 ~/.bash_login모두 당신의에서 누락되었습니다 $HOME. 몇 가지 확인이 필요하다고 생각합니다. 원래 질문에 다음 결과를 게시하십시오.

echo $0
echo $HOME
whoami
less /etc/*-release

편집 2 :

개인적으로, 나는 ~/.profile제공된 정보와 문서에 근거하여 왜 귀하의 사례에 포함되지 않았는지 모르겠습니다 . 테스트하는 동안 새로운 터미널을 시작할 때가 아니라 ~/.profile스캔 할 때 내 것이 스캔되는 것을 알았 ssh습니다.

그러나 $HOME/bin대화식 쉘에 포함 시킬 수있는 간단한 솔루션 이 있습니다. 편집하고 (없는 경우 작성) ~/.bashrc다음 행을 추가하십시오.

export PATH=$PATH:$HOME/bin

저장, 로그 아웃하고 다시 로그인하거나 source ~/.bashrc.

원하는 경우 export라인을 확장하여 $HOME/bin존재하는지 확인할 수 있습니다 .

if [ -d "$HOME/bin" ]
then
    export PATH=$PATH:$HOME/bin
fi

~/.bashrc다른 파일 대신 왜 ? 개인적으로 선호하고 더 신뢰할 수있는 것 같습니다.


답변

쉘 시작 파일이 복잡에서 소싱에 대한 규칙 . .profileX 세션 내에서 새 터미널을 열 때 설치 프로그램에 포함되지 않을 수 있습니다 ( echo .profile내부에 넣고 .profile쉘을 시작할 때 메시지가 나타나는지 확인하십시오).

.  "$HOME/.profile"

프로필을 수동으로 다시로드해야합니다.

X 로그인 및 로그 아웃도 .profile로드 되어야합니다 .

양자 택일로, 당신은 할 수 . $HOME/.profile에서 .bashrc확인 (배 포함을 방지하기 위해 변수를 기반 가드를 사용하는 동안) .profile당신이 쉘을 시작할 때마다 항상 포함되어 있습니다.

(당신은 필요가 없습니다 export PATH으로 PATH이미 내 보낸 변수와 그 값을 수정하면 그 변경되지 않습니다 export상태.)


답변

당신이 얻을하려는 경우 .profile로드 당신이 필요로하는 모든 로그인 쉘을 시작하는 것입니다 :

$ bash -l

세션을 실행하기에 충분해야합니다. 로그인 bash가 시작되기 전후에 PATH를 비교하여 차이점을 확인할 수 있습니다.

보다 영구적 인 솔루션을 위해서는 터미널 (콘솔)이 시작되기 전에 로그인 쉘을 시작해야합니다. 특정 사용자로 로그인하면 일부 dm (디스플레이 관리자) (gnome, kde, xfce, lxde 등)에서 발생합니다. 환경 변수 PATH를 필요에 맞게 변경하는 것은 그들 중 하나의 일이어야합니다.

예를 들어 xfce의 경우 해결책은 다음과 xinitrc같습니다.

$ cat >"$HOME/.config/xfce4/xinitrc" <<-\_EOT_
#!/bin/sh

# Ensure programs in ~/bin are available for the X session.
p="$HOME/bin";
[ "$p" != "${PATH%%:*}" ] && export PATH=$p:$PATH
_EOT_
cat "/etc/xdg/xfce4/xinitrc" | tail -n+2 >> "$HOME/.config/xfce4/xinitrc"

그놈의 경우 변경할 파일~/.pam_environment입니다.

KDE의 경우이 안내서 에 따라 파일을 작성하려면이 코드를 사용할 수 있습니다.

$ file='$HOME/.config/plasma-workspace/env/path.sh'
$ code='export PATH=$HOME/bin:$PATH'
$ echo "$code" >> "$file"