2017-12-07 11 views
2

PATH 환경 변수 (예 : /bin/sh의 환경 변수 기반)를 기반으로 실행 파일의 절대 경로를 찾는 방법은 무엇입니까?실행 파일 경로 찾기

예를 들어. "/usr/bin/cal"을 반환하는 program_path ("cal")?

이 질문에 대한 이유 : OCaml 라이브러리의 일부 함수 (예 : Unix.execvp)는 프로그램의 이름 만 취할 수 있으며 함수는 독자적으로 프로그램을 검색합니다. 이 검색 기능을 사용자가 사용할 수 있는지 궁금합니다.

+1

는'Unix.execvp'은 (https://linux.die.net/man/3/execvp)을 ['execvp' POSIX 기능]에게 호출하고 난 없다고 생각 경로를 검색 할 수있는 POSIX 함수. 아마도'which' 명령을 호출 할 수 있습니다. https://linux.die.net/man/1/which를 참조하십시오. – glennsl

+0

유닉스에서 '시스템'을 시도하고 '어떤 것'의 시스템 구현을 사용하고 ENOENT와 일치 시키려고 할 수 있다고 생각합니다. 'getenv' "PATH"를 입력하고 쉼표로 구분 된 폴더를 검색하여 첫 번째 (즉, 자신의 '구현') 폴더를 가져옵니다. 제 3의 함수는 Unix 모듈 위에 이걸 구현해야한다고 생각합니다. –

+0

['whereis'] (https://en.wikipedia.org/wiki/Whereis)에 관심이있을 수 있습니다. – RichouHunter

답변

2

which 유틸리티를 포함하여 POSIX 호환 파일 유틸리티를 구현하는 fileutils 라이브러리를 사용할 수 있습니다. 예 :

# #use "topfind";; 
# #require "fileutils";; 
# FileUtil.which "cal";; 
- : FilePath.filename = "/usr/bin/cal"