전체 경로를 사용하지 않고 터미널에서 하나의 특정 프로그램을 실행할 수 없습니다


9

ds9터미널에서 프로그램을 실행하고 싶습니다 . 프로그램은 분명히 PATH에 있으며, 다음을 실행하여 결정했습니다.

which ds9
/Users/evgenii/miniconda3/envs/iraf/bin/ds9

그러나을 입력하여 명령을 실행 ds9하면 다음 오류가 표시됩니다.

-bash: /Applications/ds9.app/Contents/MacOS/ds9: No such file or directory

다음과 같이 전체 경로를 사용하면 여전히 잘 실행할 수 있습니다.

/Users/evgenii/miniconda3/envs/iraf/bin/ds9

무슨 일이야? 왜 실행하려고 /Applications/ds9.app합니까?

권한은 다음과 같습니다.

-rwxrwxr-x@ 1 evgenii  staff  18613852  9 Nov 20:13 /Users/evgenii/miniconda3/envs/iraf/bin/ds9

최신 정보:

다음은 type -a ds9명령 실행 결과입니다 .

type -a ds9
ds9 is aliased to `/Applications/ds9.app/Contents/MacOS/ds9 -xpa no'
ds9 is /Users/evgenii/miniconda3/envs/iraf/bin/ds9

4
를 사용하지 마십시오 which. 외부 프로그램이므로 쉘 별명에 대해 알 수 없습니다.
Barmar

명령 작업에 Receipe은 : 사용 PATH하기보다는 aliastype보다는 which.
dan

답변:


19

이 명령은 깨진 별칭으로 별칭이 지정됩니다. 먼저 다음 명령을 실행하여 환경 변수 ds9에서 일치하는 항목을 모두 확인하십시오 PATH.

type -a ds9

업데이트 된 질문에 따르면 type -a ds9명령 출력 에서 별칭이 실제 명령을 가리고 있음 이 분명합니다 .

별명을 무시하고 전체 경로를 지정하지 않고 실제 명령을 실행하려면 명령 앞에 \(백 슬래시) 문자를 추가하십시오. 이것은 bash로 정의 된 별명을 무시합니다.

매번 명령 앞에 백 슬래시를 추가하지 않으려면 별칭이 생성되는 위치를 파악하고 제거하거나 실제 명령으로 별칭을 재정의하십시오.


1
ds9별명 정의는 대부분의 아마 ~/.bashrc와 (이 이런 종류의 문제로 이어지는 나쁜 방법이기 때문에)이 제거되어야한다. grep ds9 ~/.bashrc확인합니다.
dan

4

나는 이것이 asker를 위해 해결 된 것을 보았지만, 미래 독자들을 위해 나는 명령이 해시 된 다음 파일이 제거 된 경우라고 언급하고 싶다 . ( help hash정보를 참조하십시오 .)

type -a commandname당신에게 그것을 보여주지 않을 type commandname것입니다.

이 경우 hash -d ds9필요한 모든 것입니다.

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