~ / .profile 파일에서 경로 설정 수정


11

라인 ~/.profile이 있습니다

PATH="$HOME/bin:$HOME/.local/bin:$PATH"i

마지막에 대해 잘 모르겠습니다 i.

  • 그것을 제거해야합니까 ??
  • 구문 오류 아닌가요?


4
@dessert 중복인지 확실하지 않습니다. 나는 둘 다 $PATH환경 변수 에 관한 것에 동의 하지만 전혀 중복되지는 않는다. 기껏해야 그들은 관련이 있습니다. 이 질문은 환경이 할당 된 ~/.profile줄에 추가 문자 가되는 문제입니다 $PATH.
Dan

@Dan 중복 질문에서 가장 많이 투표 된 (!) 답변은 PATH=라인 ~/.profile이 유효한 것처럼 보이는 방법을 설명합니다 . 실제 질문입니다.
디저트

1
OP가 여기에있는 것을 @dessert는 완벽하게 유효합니다. 잘못된 형식의 문제는 아닙니다. 이것은 작동하지만 유용한 것은 없습니다.
terdon

2
예, vi 편집기를 사용합니다. 어쩌면 나는 디저트가 말한 것처럼 실수로 'i'를 파일에 넣었습니다. 그러나 나는 그것을 효과적으로하기 위해 : wq를해야했다. 나는 그것을하지 않았다고 생각하지만 내 수준을 고려할 때 어리석은 일을했을 수도 있습니다.
Smile

답변:


13

아니요, 구문 오류가 아닙니다. $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.


5

나는 다음 표현이 무엇을 의미하는지 불분명하다고 생각합니다.

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가 그녀의 답변 에서 설명하는 것처럼 새로운 가치에 추가되고 혼란을 일으킬 입니다.


5

그렇습니다. 구문 오류입니다. 실제로 .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/.


1
"export PATH = $ PATH : /home/jeremy/swift-4.0-DEVELOPMENT-SNAPSHOT-2017-06-29-a-ubuntu16.04/usr/bin"한 줄이 추가되어 설치했습니다. 괜찮아 ??
Smile

3
이 줄은 괜찮습니다. 어디에 배치해야하는지 보여주기 위해 예제에 포함 시켰습니다.
Videonauth

1
유의하시기 바랍니다 /etc/skel/.profile여부를 테스트하지 않고, 16.04 외모 다양한에 "$HOME/bin"존재한다. 그것이 더 나은 변형 (IMO)이더라도 17.10에서 이유로 또는 실수로 다시 변경된 것으로 보입니다.
Gunnar Hjalmarsson '

@GunnarHjalmarsson은 내 게시물에서 주목할 것입니다. 그렇습니다.
Videonauth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.