~ / .profile 파일에서 경로 설정 수정 ~/.profile이 있습니다 PATH=”$HOME/bin:$HOME/.local/bin:$PATH”i 마지막에 대해 잘 모르겠습니다

라인 ~/.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/binPATH 에서 기존 디렉토리를 효과적으로 제거하고 존재하지 않는을 추가했습니다 /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/.