어디서나 프로그램을 실행 가능하게 만드는 방법


75

현재 디렉토리에 관계없이 주어진 프로그램을 실행하려면 어떻게해야합니까? /bin폴더 에서 프로그램에 대한 심볼릭 링크를 만들어야 합니까?


5
아니오, 쉘의 PATH 변수를 사용해야합니다.
msw

7
개인 ~/bin/폴더 를 만들고 경로에 THAT를 추가하고 해당 폴더에 어디에서나 실행하려는 모든 항목에 대한 심볼릭 링크를 만드는 것이 좋습니다.
frabjous 2011

1
실행할 바이너리의 전체 경로를 사용하여 별칭을 설정할 수도 있습니다.
datasmurf

답변:


53

export PATH=$PATH:</path/to/file>명령 행에 입력 하면 세션 길이 동안 만 지속됩니다.

변경하려면 export PATH=$PATH:</path/to/file>~ / .bashrc 파일에 영구적으로 추가 하십시오 (끝 부분에 괜찮습니다).


11
고마워요. 나와 같은 초보자에게는 꺾쇠 괄호 <>를 생략해야합니다. $ PATH : / your / file / path
SAm

4
또한 경로에 프로그램 파일 이름 자체를 포함시키지 마십시오.
Olli Niemitalo

23

짧은 대답은 디렉토리를 불문하고 프로그램을 실행하려면 검색 경로에 프로그램 디렉토리가 있어야한다는 것입니다. 프로그램을 해당 경로에 이미있는 폴더에 넣거나 경로에 새 폴더를 추가하면 문제가 해결 될 수 있습니다. 가장 좋은 대답은 다음에 달려 있습니다.

이 프로그램은 소스에서 직접 컴파일 한 다운로드 프로그램입니까?

이미 설치 메커니즘이있을 것입니다. 프로그램을 컴파일 한 폴더에서 root로 'make install'을 실행하십시오.

이 프로그램은 컴퓨터에서 표준 프로그램의 일부로 사용 가능하게하려는 다운로드 프로그램입니까?

이런 종류의 응용 프로그램을 표준 폴더에 넣는 것이 좋습니다. 이러한 프로그램에 / usr / local / bin과 같은 디렉토리를 사용하는 것이 일반적입니다. 이를 위해서는 루트 액세스 권한이 필요합니다.

이 프로그램은 귀하가 직접 작성했거나 컴퓨터에 특별한 권한이없는 프로그램입니다.

홈 디렉토리에 'bin'이라는 폴더를 작성하고 거기에 프로그램을 배치하십시오. 이 폴더의 전체 경로를 추가하기 위해 로그인 스크립트를 편집해야 할 수도 있습니다 (예 : / usr / home / jeremy / bin)

현재 디렉토리를 검색 경로에 추가 할 수는 있지만 모든 새 프로그램에서이 작업을 계속 수행해야하며 장기적으로 더 많은 작업이 필요합니다.


15

/bin디렉토리에 파일에 대한 링크를 배치하는 것은 여러 가지 이유로 최선의 방법이 아닙니다.

  • 실제 실행 파일이 일부 사용자가 보거나 실행할 수없는 위치에 있으면 해당 파일이 잘못된 링크 또는 기능 장애 프로그램으로 간주됩니다.
  • /bin디렉토리는 시스템을 실행에 필요한 프로그램 (같은 것들에 예약 할 예정이다 chmod, mkdir등).

실제로 실행 파일을 /usr/bin/또는에 배치 (설치) 할 수 있습니다 /usr/local/bin/. 물론 그 시점에서 프로그램을 수동으로 설치했습니다. 배포판이 나머지 프로그램의 방식을 추적하지는 않습니다. 필요할 때 수동으로 업그레이드하고 원하는 경우 수동으로 제거해야합니다. 또한 패키지가 의존하는 패키지를 알아야합니다 (이미 프로그램을 사용하고있는 것처럼 들리지만 일반적으로 처리됩니다 ...).

다른 사용자가 사용할 것으로 예상되는 프로그램을 설정하지 않는 한, 그것은 내가 일반적으로하는 것이 아닙니다. 홈 디렉토리에 나를 위해 bin 디렉토리를 만들고 ~/bin/PATH환경 변수 에 추가 하기 위해 쉘 프로파일을 편집 합니다. 다른 시스템과 분리되어 있기 때문에 설치 한 프로그램을 쉽게 추적 할 수 있습니다.


6

foo쉘이 현재있는 디렉토리에서 명령을 실행 하려면 기본적으로 두 가지 옵션이 있습니다.

  1. ./foo쉘 프롬프트에서 입력 하십시오.

  2. 추가 .(디렉토리를 .받는 "현재 디렉토리"에 대한 이름입니다) PATH환경 변수; 이 작업을 수행하는 방법은 사용중인 쉘에 따라 다릅니다.

    • Bourne 유형 쉘 (bash, zsh, ksh 등)의 경우 다음을 작성하십시오 ( 자세한 내용 은 이 페이지 참조 ).

      export PATH=$PATH:.
      
    • csh 유형 쉘 (tcsh, csh)의 경우 다음을 작성하십시오 ( 자세한 내용 은 이 페이지 참조 ).

      set path = ( $path .)
      

2.는 다중 사용자 시스템의 보안 위험 요소입니다. cd디렉토리에 /tmp있고 악의적 인 사용자가 ls거기에 이름이 지정된 맬웨어 바이너리를 생성했다고 가정 해보십시오.


2
예, 옵션이 유닉스를 통해 당신이 일을 해 보겠다고 보여줍니다. 그것은 나쁜 연습으로 간주됩니다. 추가 중입니다. 당신의 경로에 또한 일반적으로 나쁜 다른 부작용을 만들 수 있습니다.
유닉스 청소부

1

덤비는 것은 PATH실수로 악성 프로그램을 실행까지를 엽니 다. 표준은 "로컬"항목을 설치 하는 것입니다 (유닉스 사용을 체계화하는 FHS/usr/local 참조 : 약간 날짜가 있지만 이론적 근거를 제공함). 일반적으로 모든 사용자에게 적용됩니다./usr/local/binPATH

내 "로컬로 설치된"프로그램은에 $HOME/bin의해 표준 무용으로 설정 ./configure --prefix=$HOME ...되어 있으며, 몇 가지 (bash) 별칭과 결합하여 시스템 하나에 자체 빌드 된 git을 선택합니다 (충돌하지 않는 프로그램 PATH은 맨 끝에 있습니다).

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