배쉬, 항상 경로의 일부로 $ PWD를 확인?


15

배경 : Linux 배경에서 온 동료 중 한 명이 나에게 ./명령을 사용하고 다른 명령을 사용하지 않는 방법에 대해 물었 으므로 PATH작동 방식과 바이너리 실행 방법 을 그에게 설명했습니다 . 그의 대답은 멍청하다는 것이며, ./명령 전에 입력 할 필요가 없었습니다 .

질문 : $PWD항상 첫 번째 항목 인 쉘의 동작을 쉽게 수정할 수있는 방법이 PATH있습니까?


바보 일 수도 있고 아닐 수도 있지만 모든 환경에는 단점이 있으며 이는 일반적인 유닉스 쉘입니다.
RonJohn

12
보안 조치입니다. 셸 은 기본적으로이 작업을 수행 하는 데 사용 되었으며 (1970 년대 생각) 다중 사용자 시스템이이를 위해 널리 공격을 받았습니다.
Charles Duffy

3
그의 대답은 그것이 멍청하다는 것이 었습니다 . 동료는이 주제에 대해 스스로 교육해야한다고 말했습니다. 이 커프스 답변은 PHB 스타일의 응답을 보여줍니다 . 기본 시스템에 대한 이해 나 감사가 없습니다.
Cloud

2
왜 바이너리를 드롭하여 ~/bin일부로 만들지 PATH않겠습니까? 이것은 일을 체계적으로 유지합니다.
Sergiy Kolodyazhnyy

3
Windows의 @Ziazis에서 현재 디렉토리는 디렉토리의 일부인지 여부에 관계없이 고려됩니다 PATH(일반적인 고려 사항의 소스 임).
Stephen Kitt

답변:


55

정말로 원한다면 .경로 앞에 추가 하여이 작업을 수행 할 수 있습니다 .

export PATH=".:$PATH"

그러나 이것은 쉘이 현재 디렉토리의 명령을 다른 디렉토리보다 우선적으로 선택한다는 것을 의미하기 때문에 나쁜 생각입니다. 누군가 (또는 일부 프로그램)가 ls자주 사용하는 디렉토리에 악성 명령을 드롭하면 문제가 생길 수 있습니다.


13
이것은을 움직여도 충분하지만 훌륭한 점입니다. 경로의 끝에 PATH = "$ PATH :."
Christophe

12
실제로 나는 .당신의 시작 부분에 PATH일반 사용자의 기본값이었던 것을 기억 합니다 (적어도 HP-UX에서 "sam"으로 사용자를 만든 경우, 구 SunOS에 대해서는 잘 모르겠습니다). 나중에이 기본값은 보안상의 이유로 제거되었습니다. 당신이있는 경우 .귀하의 마지막 항목으로 PATH, 여전히 누군가가 전형적인 오타 희망 할 수 있습니다.
Philippos

6
@Philippos는 악명 높은 /tmp/sl장난 스크립트와 같은 경로를 가진 사용자를 대상으로합니다. 데비안과 파생 제품에서 sl패키지를 설치하여 sl대신에 얼마나 자주 입력하는지 알 수 있습니다 ls.
Stéphane Chazelas

아니요, 나쁜 생각이 아닙니다. 특히 개발자 인 경우 좋은 생각입니다. 물론 악의적 인 명령에 빠지지 않는 환경을 유지하는 것도 좋은 방법입니다.
jamesqf

4
@jamesqf, 사실, ./현재 디렉토리에서 명령을 호출하려고 할 때 입력하는 것이 좋습니다 . 또는 당신의 보통 현재 디렉토리 인 경우 /project/under/development/bin, 다음 추가 것을 당신에게 PATH. 이것은 개발자 유스 케이스를 해결합니다. .당신의 시작에 두는 PATH것은 나쁜 생각, 기간입니다.
와일드 카드

14

이것은 귀하의 질문에 대한 직접적인 대답은 아니지만 bin홈 디렉토리에 다음과 같이 디렉토리 를 작성하는 것이 가장 좋습니다 /home/user/bin.

mkdir -p "$HOME/bin"
echo 'PATH="$HOME/bin:$PATH"' >> "$HOME/.bashrc"
source "$HOME/.bashrc"

거기에 당신의 개인 대본을 넣으십시오. 는 PATH당신이 그것을 정의하고없이 귀하의 개인 스크립트를 실행 순서대로 통과 될 .필요가 있었다.


0

이 있어야합니다. PATH 변수의 시작 부분에서 :

export PATH=".:$PATH"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.