$HOME/bin 디렉토리가 $PATH에 없습니다.

$HOME/bin 디렉토리가 $PATH에 없습니다.

내 파일에는 다음과 같이 개인 데이터를 로드 ~/.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/"

답변1

위에서부터 ~/.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다른 파일은 왜 안되나요? 개인적인 취향이라 더 신뢰가 가는 것 같습니다.

답변2

이것인패키징 셸 시작 파일에 대한 규칙은 복잡합니다.. 설정에서 .profileX 세션에서 새 터미널을 열면 아마도 포함되지 않을 것입니다(이를 넣어서 echo .profile.profile을 시작할 때 메시지가 나타나는지 확인하십시오).

.  "$HOME/.profile"

구성 파일을 수동으로 다시 로드해야 합니다.

X에 로그인하고 로그아웃해도 X가 .profile로드됩니다.

또는 (이중 포함을 방지하기 위해 변수 기반 가드를 사용하는 동안) 쉘이 시작될 때마다 항상 포함되도록 할 수 있습니다 . $HOME/.profile..bashrc.profile

export PATH( PATH이미 내보낸 변수이고 해당 값을 수정해도 상태가 변경되지 않으므로 이 작업을 수행할 필요가 없습니다 export.)

답변3

로드 하려면 .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"

관련 정보