내가 뭔가를 컴파일하고 다음과 같이 실행했다고 가정해 보겠습니다.
$ /path/to/my/executable/mycmd
Hello World
실행하려면 어떻게 해야 하나요?
$ mycmd
Hello World
내 컴퓨터 어디에서나?
답변1
당신이 찾고있는 것은 PATH
환경 변수입니다. 프로그램을 찾을 위치를 쉘에 알려줍니다. 다음 명령을 사용하여 이 변수의 현재 값을 볼 수 있습니다 echo
.
echo "$PATH"
이제...새로운 프로그램을 사용하고 싶다면 배포판의 패키지 관리자를 사용하여 설치하는 것이 가장 좋습니다. 하지만 이 경우에는 사용 가능한 패키지에서 제공하지 않는 프로그램을 다루고 있다고 가정합니다. 이러한 유형의 프로그램에는 두 가지 옵션이 있습니다.
- 시스템에 설치된 위치에 시스템 전체에 프로그램을 설치합니다.아니요패키지에서 설치된 모든 파일을 배치하십시오. 대부분의 시스템에서 이러한 "안전한" 폴더에는 다음
/usr/local/bin/
이 포함됩니다./opt/bin/
- 이러한 폴더는 이미PATH
.잘못된자신의 프로그램을 배치할 위치는 나열된 다른 폴더를 살펴봐야 합니다PATH
. ) 변수를 수정하세요
PATH
. 이는 프로그램을 저장할 수 있는 추가 폴더를 정의하고 누군가가 자신의 프로그램을 거기에 넣어 실행하도록 속일 수 있기 때문에 덜 안전합니다.PATH
다음을 사용하여 변수를 일시적으로 수정할 수 있습니다 .export PATH="$PATH:/path/to/your/executable"
(알아채다
$PATH
뒤쪽에=
) 또는 위의 줄을 파일에 추가하여.bashrc
영구적으로 만듭니다 (를 사용한다고 가정bash
).
답변2
사용자 스크립트(또는 컴파일된 실행 파일)는 일반적으로 이 ~/bin
디렉터리에 저장됩니다. 이를 통해 경로를 지정하지 않고도 실행할 수 있습니다.
그러나 설치된 패키지 및 프로그램에 의해 배치된 스크립트와 스크립트를 혼합하고 싶지 않은 경우 ~/bin
선택한 디렉토리에 스크립트를 저장하고 에 바인딩할 수 있습니다 ~/bin
. ~/bin
경로를 지정하지 않고 간단한 이름을 사용하여 터미널에서 실행하세요.
일회성으로 이 명령을 실행할 수 있습니다(다시 시작하면 효과가 사라짐).
mkdir /home/user/.overlay
sudo mount -t overlay overlay -o lowerdir=/home/user/my-scripts-directory,upperdir=/home/user/bin,workdir=/home/user/.overlay /home/user/bin
이 명령을 사용하여 새 스크립트를 생성하고 로그인 시 자동으로 실행하여 재부팅 후 이 바인딩을 다시 마운트할 수 있습니다.
또는
영구적으로 바인딩하려면 다음 줄을 다음에 추가하세요 fstab
.
# bind my scripts to ~/bin
overlay /home/user/bin overlay defaults,lowerdir=/home/user/my-scripts-directory,upperdir=/home/user/bin,workdir=/home/user/.overlay 0 0
아래 방법은 이전에 사용해 본 적이 있지만, 제가 인지하지 못한 결함이 있습니다: ~/bin
실제 폴더의 내용에 접근할 수 없게 됩니다. 그래서 나는 그것을 사용하지 않는 것이 좋습니다. 위에서 설명한 다른 방법을 찾았지만, 댓글에서 논의한 내용을 오해하지 않기 위해 이 오래된 방법은 여기에 남겨두겠습니다.
이 명령을 일회성으로 실행할 수 있습니다(재부팅 후 효과가 사라짐).
sudo mount --bind ~/my-scripts-directory ~/bin
이 명령을 사용하여 새 스크립트를 생성하고 로그인 시 자동으로 실행하여 재부팅 후 이 바인딩을 다시 마운트할 수 있습니다.
영구적으로 바인딩하려면 다음 줄을 다음에 추가하세요fstab
.
# bind my scripts to ~/bin
/home/user/my-scripts-directory /home/user/bin none bind 0 0