특정 소프트웨어의 경로를 아는 방법?


13

컨텍스트 : 로그인 할 때 응용 프로그램을 자동으로 시작하려고합니다. 이를 path위해 응용 프로그램 의을 선택해야 합니다.

여기에 이미지 설명을 입력하십시오

이미 살펴본 경로는 다음과 같습니다.

  • /sbin
  • /usr/sbin
  • /usr/local/bin
  • /usr/share/

이것이 도움이 될 경우, 찾으려는 응용 프로그램을 " ScreenCloud " 라고 하고 우분투 소프트웨어 센터에서 다운로드했습니다.

하지만 찾을 수 없습니다. 특정 소프트웨어가 어디에 설치되어 있는지 알 수있는 방법이 있습니까? 내가 이것을 찾았더라도 앞으로 동일한 문제가 발생하지 않도록하고 싶습니다.


2
명령 행에 screencloud를 입력하면 작동하지 않습니까?
Graham

스냅 저장소 또는 Ubuntu 소프트웨어 센터에서 가져 왔습니까? Ubuntu apt 저장소에서 찾을 수 없기 때문입니다.
mchid

2
@mchid 나는 OP의 링크를 다루지 않고 오히려 당신의 의견 : "어떤 우분투 아파트 저장소에서 그것을 찾을 수 없기 때문에" Screencloud는 .deb패키지 에서 설치할 수 있지만 PPA를 추가해야합니다.
WinEunuuchs2Unix

1
@mchid 나는 명령이 변경되었습니다 알고 screencloud.shscreencloud그리고 그것은 밖으로 이동되었습니다 의심 /opt. 내 대답의 그 부분은 어떻게 지적했다 typewhich찾을 것이다 screencloud하지만 locate것.
WinEunuuchs2Unix

1
@ WinEunuuchs2Unix 맞습니다. screencloud.sh실제로 여전히 존재하지만 파일이 스크립트이고 그렇지 screencloud않다는 사실 과 다른 점이 확실 하지 않습니다. 이 응용 프로그램에 익숙하지 않습니다. 아래 에는 , a 및 뒤에 버전 번호 가 있습니다. .shscreencloud/usr/bin/screencloudscreencloud.shscreencloud-gimp
mchid

답변:


16

실행 파일의 경로를 찾으십시오

가장 좋은 방법은

  • type executable

더 나은 방법 에 대한 자세한 내용은 이 질문 을 확인하십시오 type. (감사합니다!)

다른 방법들

  • whereis executable
  • which executable

이러한 명령은 PATH 변수 ( echo $PATH) 만 검색 하므로 일부 경우 (내장 함수, 별명 또는 bash 함수 등)에는 유효하지 않습니다.


3
믿을 수 없을 정도로 이것은 아직 우분투에 대한 질문이 아닙니다. 좋은 질문 @Ced!
tatsu

실제로 나는 그것을 믿을 수 없다!
Biggybi

1
쉘 내장 type이므로 선호 되는 다른 질문에서 알았으며 which명령이 별칭인지 여부를 확인할 수 있습니다. 그것은 나에게도 새로운 것이었다!
Arronical

1
type선호되는 이유에 대한 자세한 설명은 여기를 참조하십시오 . "which"를 사용하지 않는
terdon

1
@ mchid 답변의 포인트가 모두 적용됩니다. which쉘 스크립트의 특정 컨텍스트에서 실제로 유용한 "사용 사례"섹션을 포함합니다 . 그러나 이러한 맥락을 벗어나면 type거의 항상 더 나은 선택입니다.
terdon

1

경로 내부 또는 외부에서 명령 위치 찾기

uname시스템 정보를 나열하는 프로그램 인의 위치를 ​​찾으려고 가정합니다 . 최상위 명령이 저장된 디렉토리를 알고 싶다면 다음과 같은 여러 옵션이 있습니다.

$ which uname
/bin/uname

$ type -a uname
uname is /bin/uname

$ command -v uname
/bin/uname

$ locate uname
/bin/uname
    (... SNIP dozens of Windows files on C & D ...)
/usr/lib/klibc/bin/uname
/usr/lib/plainbox-provider-resource-generic/bin/uname_resource
/usr/share/man/man1/uname.1.gz
/usr/share/man/man2/oldolduname.2.gz
/usr/share/man/man2/olduname.2.gz
/usr/share/man/man2/uname.2.gz

장점 찾기

마지막 옵션 은 명령 프롬프트에서 실행되는 프로그램뿐만 아니라 locate모든 파일을 반환 uname합니다.

검색 경로에 없는locate 명령을 찾을 수 있다는 장점 이 있습니다 . (간단한 선호 ) 검색 경로에서 명령 만 찾습니다. 검색 경로를 보려면을 사용하십시오 .type -atypewhichecho $PATH

Screencloud를 시작하는 방법 에서이 답변을 예로 들어 보겠습니다. :

시험...

/opt/screencloud/screencloud.sh

locate screencloud명령은 그것을 찾을 수 있지만 다음 which screencloud과 같은 type -a screencloud이유는 아닙니다 :

  • 전체 이름은 명령이 부분적으로 screencloud.shlocate검색합니다.
  • /opt/screencloud아마도 검색 경로에 없을 것입니다. which그리고 type에만 검색 경로에있는 실행 파일을 찾습니다.

참고 : 이것은 오래된 답변입니다. Modern ScreenCloud는로 호출됩니다 screencloud.

find명령에 비해 Locate의 장점 은 수백 또는 수천 배 더 빠를 수 있다는 것입니다. 또한 find처음부터 실행 /하면에 발생하지 않는 많은 권한 오류가 발생합니다 locate.

단점 찾기

오늘 프로그램을 방금 설치했다면 sudo updatedblocate의 데이터베이스를 업데이트하는 데 사용해야 합니다.


1

다음 명령을 사용하여 모든 $PATH디렉토리 를 나열하십시오 .

echo $PATH | sed 's/:/\n/g'

다음 명령을 사용하여 전체 경로를 찾으십시오 screencloud.

for i in $(echo $PATH | sed 's/:/\n/g'); do find $i/screencloud* 2>@1; done

당신이 사용하는 경우 apt, apt-get패키지를 설치하거나 우분투 소프트웨어 센터를, 당신은 전체 경로를 찾으려면 다음 명령을 사용할 수 있습니다 :

dpkg -L screencloud | grep bin

당신이 사용하는 가정 이 저장소를 , 당신은 찾을 수 있어야 screencloud 에서 /usr/bin/.

전체 경로는 다음과 같습니다.

/usr/bin/screencloud

또는

/usr/bin/screencloud-*

그러나 질문에 제공링크 에 따라 snapcraft 상점 을 사용한 경우 경로는 다음 디렉토리에 있습니다.

/snap/bin

더 많은 정보

또한 우분투는 대소 문자를 구분하므로 대문자없이 모두 소문자를 사용해야합니다.


이 매우 자세한 답변을 주셔서 감사합니다, 당신은 공짜로 이겼습니다 :)
Ced

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