"./"를 지정하지 않고 bash 파일 완성

"./"를 지정하지 않고 bash 파일 완성

CentOS 8의 최소 설치를 사용하고 있습니다.

내 홈 폴더에 "some_folder"라는 폴더가 있으면 명령줄에서 다음을 수행할 수 있습니다.

some <now hit tab, and bash completion resolves to "some_folder">

그러나 홈 폴더에 "my_file"이라는 파일이 있으면 프롬프트에 다음을 입력합니다.

my_ <now hit tab, and NOTHING happens, bash completion does not work>

./my_분명히 탭(!?)을 누르기 전에 돌아가서 입력해야 합니다. 폴더와 동일한 방식으로 CentOS에서 파일을 탭 완성하는 방법을 알고 계십니까?

답변1

현재 디렉터리가 귀하의 디렉터리에 없거나 있어서는 안 됩니다 $PATH. 따라서 실행 파일을 찾을 수 있는 유효한 위치가 아닙니다. 이 예에서는 my_가 명령의 접두사이므로 현재 디렉터리에서 찾을 수 없습니다.

my_<tab>

이 경우 my_탭 완성을 통해 찾을 수 있는 일반 파일입니다.

cat my_<tab>

답변2

이전 명령이 없으면 my_쉘은 단순히 로컬 디렉토리의 이름을 사용합니다 PATH. 기본적으로 PATH모범 사례상 현재 디렉토리는 디렉토리에 없습니다.

당신이 이것을 하고 싶다면, ls my_<TAB>당신을 위해 이루어져야 합니다.

답변3

한 가지 방법은 현재 디렉터리를 구성 파일의 PATH 환경 변수에 추가하는 것이지만 이 방법은 의도적으로 실행하지 않고(./ 없이) 스크립트를 실행할 수 있기 때문에 위험할 수 있습니다.

export PATH="$PATH:."

관련 정보