별칭에 대해 "/bin/bash 명령을 찾을 수 없음" 오류가 발생하는 이유는 무엇입니까?

별칭에 대해 "/bin/bash 명령을 찾을 수 없음" 오류가 발생하는 이유는 무엇입니까?

나는 python3다음과 같이 별칭을 지정한 여러 비단뱀을 사용하고 있습니다 py.

alias py="/opt/python3.4/bin/python3"

Python을 실행하고 싶기 vim때문에 다음과 같이 작성합니다.

map <F9> :call SpecialCompileRun()<CR>
func! SpecialCompileRun()
    exec "w"
    if &filetype == 'python'
        exec '!time py %'                                                                                                                                                                               
    endif
endfunc

하지만 vim을 누르면 다음과 같은 F9메시지가 나타납니다.

/bin/bash py cannot find command

py로 변경하면 python3이제 작동하지만 여전히 이유를 알고 싶습니다.

답변1

정의한 방식은 py셸 별칭이고 Vim은 셸 별칭에 대해 모르거나 관심도 없기 때문입니다. 대신 다음과 같이 환경 변수를 사용하십시오.

$ PY=/opt/python3.4/bin/python3
$ export PY

그런 다음 Vim에서:

...
exec '!time ' . fnameescape($PY) . ' %'
...

편집하다: 에 추가하세요 fnameescape(). $PYVim에게 특별한 의미를 갖는 문자(fi #및 )가 포함된 경우 %필수입니다 .

답변2

@lcd047이 말했듯이 별칭은 사용할 수 없습니다 vim. 그런데 expand_aliases옵션을 활성화하지 않으면 쉘 스크립트에서도 사용할 수 없습니다.

어쨌든 또 다른 옵션은 별칭 대신 링크를 만드는 것입니다.

sudo ln -s /opt/python3.4/bin/python3 /usr/bin/py

/usr/bin/py그러면 에 대한 링크가 생성됩니다 /opt/python3.4/bin/python3. 에서는 명령 을 /usr/bin어디 에서나 사용할 수 있습니다.$PATHpy

관련 정보