내 안에 다음과 같이 ~/.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
다른 파일 대신 왜 ? 개인적으로 선호하고 더 신뢰할 수있는 것 같습니다.
답변
쉘 시작 파일이 복잡에서 소싱에 대한 규칙 . .profile
X 세션 내에서 새 터미널을 열 때 설치 프로그램에 포함되지 않을 수 있습니다 ( 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"