
방금 WSL(Windows Subsystem For Linux) 아래 Windows에 Ubuntu 18.04.4 LTS를 설치했습니다. bash 터미널에 존재하지 않는 명령을 실행하면(예를 들어 실수로 에 추가 s를 추가한 경우 ls
) 다음 오류가 발생합니다.
$ lss
-bash: /usr/bin/python: No such file or directory
오류가 맞습니다. Python3만 설치했습니다.
$ ls /usr/bin/python*
/usr/bin/python3 /usr/bin/python3-jsonpatch /usr/bin/python3-jsonschema /usr/bin/python3.6m
/usr/bin/python3-jsondiff /usr/bin/python3-jsonpointer /usr/bin/python3.6 /usr/bin/python3m
이전 Ubuntu 사용에서 메시지는 "다음 패키지에서 'lss' 프로그램을 찾을 수 있습니다."여야 한다는 것을 기억합니다. 해당 메시지는 더 이상 필요하지 않으며 단지 작동시키기 위해 python2를 설치하고 싶지 않습니다. (이 질문에는 py2를 설치하여 문제를 해결하기 위한 답변이 있습니다.).
python2를 설치하지 않고, python 3을 2로 심볼릭 링크하거나, 완벽해지고 다시는 오타를 만들지 않고 이 문제를 해결할 수 있습니까?
이상적으로는 "명령이 존재하지 않습니다" 스크립트를 python3 또는완전히 비활성화.
답변1
Python3은 Python2를 대체하는 것이 아닙니다. Python3 버전의 lss
.
lss
내가 당신이라면 업데이트하겠습니다 . 독립형 스크립트이며 소스는 다음에서 찾을 수 있습니다.깃허브. 1은 분명합니다.
print 'Usage:', __file__, '/path/to/dir'
"print"는 python3을 사용할 때 "(" 및 ")"를 사용해야 합니다. 나는 스크립트를 이름 lss3
이 비슷한 파일에 넣고 python3 lss3
오류를 찾아 수정하는 데 사용했습니다.
답변2
내가 함수를 재정의하고 있었던 것으로 밝혀졌습니다 command_not_found_handle
(배쉬 기능python
) 내 bashrc에서 직접 호출하는 내용을 사용합니다 .
# if the command-not-found package is installed, use it
if [ -x /usr/lib/command-not-found ]; then
function command_not_found_handle {
# check because c-n-f could've been removed in the meantime
if [ -x /usr/lib/command-not-found ]; then
/usr/bin/python /usr/lib/command-not-found -- $1
return $?
else
return 127
fi
}
fi
이 코드는 더 이상 필요하지 않으며(이제 그랬습니까?) 이를 제거하면 문제가 해결되었습니다. 이제 이전의 "다음 패키지에서 찾을 수 있습니다" 출력이 다시 나타납니다.
완전성을 위해: Python 코드와 명령이 존재하지 않는 간단한 출력을 건너뛰려면 bashrc에 다음을 넣을 수 있습니다.
function command_not_found_handle {
echo Command not found: $1
return 127
}