내 파일에는 다음과 같이 개인 데이터를 로드 ~/.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
이것인패키징 셸 시작 파일에 대한 규칙은 복잡합니다.. 설정에서 .profile
X 세션에서 새 터미널을 열면 아마도 포함되지 않을 것입니다(이를 넣어서 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"