라인 ~/.profile
이 있습니다
PATH="$HOME/bin:$HOME/.local/bin:$PATH"i
마지막에 대해 잘 모르겠습니다 i
.
- 그것을 제거해야합니까 ??
- 구문 오류 아닌가요?
답변
아니요, 구문 오류가 아닙니다. $PATH
쉘은 따옴표를 제거하기 때문에 확장 후 추가 된 문자 일뿐입니다 …
$ PATH="$HOME/bin:$HOME/.local/bin:$PATH"i
$ echo $PATH
/home/zanna/bin:/home/zanna/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bini
따라서 로컬 디렉토리를 추가 할뿐만 아니라 기존 /snap/bin
PATH 에서 기존 디렉토리를 효과적으로 제거하고 존재하지 않는을 추가했습니다 /snap/bini
.
을 제거 i
하여 PATH를 복구 할 수 있습니다 .
변경 사항을 보려면 로그인 셸 에서만 읽으 므로 source ~/.profile
사용중인 셸 에서 로그 아웃했다가 다시 로그인하거나 실행해야합니다 (또는로 셸을 시작해야 함 bash -l
) ..profile
.profile
직접 변경하지 않은 경우 다음 을 실행하여 기본 파일을 복원 할 수 있습니다
mv ~/.profile{,.old}
cp /etc/skel/.profile ~/.profile
이렇게하면 이전 이름이 바뀌고 .profile
.profile.old
(원하는 경우 파일을 삭제할 수도 있음) 파일이에서 시스템의 기본 버전으로 바뀝니다 /etc/skel
.
답변
나는 다음 표현이 무엇을 의미하는지 불분명하다고 생각합니다.
PATH="$HOME/bin:$HOME/.local/bin:$PATH"i
첫 번째 부분 PATH=
은 (environment) 변수에 새로운 값을 할당한다는 의미 $PATH
입니다.
두 번째 부분은 해당 변수의 새로운 값입니다. 현재의 경우 변수 $HOME
는 현재 값으로 확장되고 해당 값에 문자열이 추가됩니다 /bin:
. 문자열의 다음 부분도 마찬가지 $HOME/.local/bin:
입니다. 마지막으로 $PATH
변수 의 현재 (이전) 값 이 확장되고 추가됩니다. 콜론 :
은 PATH
표현식 에서 분리 문자의 역할을 합니다.
궁극적으로 목표는 다음과 같습니다 PATH=<some additional paths>+<the the current value of $PATH>
.. 셸이 먼저이 위치에서 실행 파일을 검색 한 다음 시스템 전체에서 실행 파일을 검색하기를 원하기 때문에 이러한 추가 경로를 문자열 앞에 놓습니다.
캐릭터 i
는 불필요합니다. $PATH
@Zanna가 그녀의 답변 에서 설명하는 것처럼 새로운 가치에 추가되고 혼란을 일으킬 것 입니다.
답변
그렇습니다. 구문 오류입니다. 실제로 .profile
변경하지 않는 한 실제 는 다음과 같습니다 (이것은 17.10 버전입니다. 아래 참고 참조).
# ~/.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.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
이전 버전의 Ubuntu에서는 사용자 bin
디렉토리가 있는지 확인하지 않은 경우 다르게 보일 수 있습니다 .profile
. 어떻게 보이는지 확인하는 가장 쉬운 방법은를 살펴 보는 것입니다 /etc/skel/.profile
.
의견에 요청한대로 추가하려면 간단히 프로필 파일의 끝에 배치하십시오.
# Manual addition for swift development snapshot
export PATH="$PATH:/home/jeremy/swift-4.0-DEVELOPMENT-SNAPSHOT-2017-06-29-a-ubuntu16.04/usr/bin"
프로필을 완전히 엉망으로 만든 경우에서 새 프로필을 얻을 수있는 사본이 있습니다 /etc/skel/
.