내 경로에 바이너리를 추가


15

실행 파일이 있습니다. 다른 명령처럼 이름으로 터미널에서 실행 파일을 실행하고 싶습니다.

내 실행 파일을 넣을 수 있습니다 /usr/local/bin또는 나는 그것 추가 할 수 있습니다 PATH~/.bashrc. 둘 다 작동합니다.

더 나은 게 뭐야? 차이점이 있습니까?

답변:


12

예를 들어 실행 파일이 있다고 가정하겠습니다 myscript. 터미널에서 다음과 같이 실행해야합니다.

/path/to/myscript

사용자 레벨 변경

PATH해당 실행 파일을에 추가하면 ~/.bashrc어디에서나 이름을 가진 실행 파일을 실행할 수 있습니다 ( Avinash Raj는 이미 언급 한 바와 같이).

myscript

그러나 변경 사항은 사용자 수준에 영향을 미칩니다 . 즉, 다른 사용자가 있으면 이름만으로 실행 파일에 액세스 할 수 없습니다. 적절한 권한이 있으면 실행 파일을 다음과 같이 실행해야합니다.

/path/to/myscript

또한 루트 가 아닌 스크립트를 sudoPATH실행할 sudo수 없습니다.

sudo /path/to/myscript

시스템 레벨 변경

스크립트를 넣으면 /usr/local/bin시스템 전체 및 모든 사용자가 액세스 할 수 있습니다. 이 경우 모든 사용자는 실행 파일을 다음과 같이 실행할 수 있습니다 (적절한 권한이있는 경우)

myscript

이 경우 실행 파일을 다음과 같이 실행할 sudo수도 있습니다.

sudo myscript

이제 필요에 따라 한 가지 방법을 선택하십시오.


2

파일의 $PATH변수에 파일 위치를 추가하면 ~/.bashrc어느 위치에서나 실행할 수 있지만/usr/bin/ 시스템에있는 모든 사용자는 어느 위치에서나 해당 파일을 실행할 수 있습니다.

왜 그런 겁니까? ~/.bashrc파일은 사용자 만 볼 수 있기 때문 입니다. 따라서 수행 된 모든 변수 변경은 귀하에게 제한됩니다. 반면에 파일을 추가하면 파일이 /usr/bin모든 사용자에게 남아있을 수 있으며 누군가 파일을 제거하지 않는 한 변수에 /usr/bin존재 하므로 $PATH모든 사용자가 모든 위치에서 파일을 실행할 수 있습니다.


1

실행 파일을 /usr/bin또는에 넣으면 /usr/local/bin이름 your-program대신 ( /usr/local/bin/your-program) 만 지정하여 해당 프로그램을 실행할 수 있습니다 .

대신 프로그램을 포함하는 디렉토리를 ~/.bashrc파일에 추가하면 해당 디렉토리에 PATH있는 실행 파일은 이름 만 입력하여 시작할 수 있습니다.


1
이 정보는 거짓입니다. "해당 디렉토리"에 있지 않아도 실행 파일을 여전히 시작할 수 있습니다.
Lekensteyn

이것이 어떻게 거짓입니까? 조금 더 설명해주세요.
Avinash Raj

1
좋아, 나는 당신의 대답을 읽는 데 어려움을 겪었고 (따라서 오류를 일으켰다) 그래서 혼란을 제거하고 downvote를 원격 처리하기 위해 그것을 편집했습니다. 잘하면 도움이됩니다.
Lekensteyn

그래서 문제는 : 무엇이 더 낫습니까? 차이점이 있습니까? 당신은 실질적으로 OP 이상 아무것도 말하지 않았습니다.
Radu Rădeanu

OS의 질문에 대답했지만 간단한 형식은 아닙니다.
Avinash Raj

0

@souravc 답변을 보완하는 것처럼 ...

"사용자 수준 변경"의 경우 ~/.bashrc파일을 편집하는 대신 단순히 디렉토리를 만들 수 있습니다$HOME/bin/ 스크립트를 거기에 배치 됩니다.

디렉토리는 자동으로 PATH(적어도 Ubuntu 12.04 이후)에 추가됩니다. 즉, 디렉토리 내에서 모든 스크립트 / 실행 파일을 간단하게 실행할 수 있습니다.

myscript

그냥 내 2 센트. :)

추신-나는 이것을 @souravc 답변에 대한 의견으로 게시하려고 시도했지만 평판이 충분하지 않았습니다. :-(

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