2016-06-05 6 views
3

echo $bash_ 명령을 입력하고 Tab 키를 누르면 자동 완성이 수행되지 않습니다.
그러나 명령 echo $BASH_, 그때 내가 Tab 누를 때 입력 완료 목록을 것 같은 출력 :탭 완료 변수 이름이 Bash에서 대소 문자를 무시할 수없는 이유는 무엇입니까?

$BASH_ALIASES    $BASH_COMMAND    $BASH_SOURCE 
$BASH_ARGC     $BASH_COMPLETION_COMPAT_DIR $BASH_SUBSHELL 
$BASH_ARGV     $BASH_LINENO     $BASH_VERSINFO 
$BASH_CMDS     $BASH_REMATCH    $BASH_VERSION 

그리고 내 .inputrc 파일은 readline IGNORECASE 옵션, set completion-ignore-case on를 포함하고 파일 이름을 완료 대소 문자를 구분하지 괜찮습니다 .
그래서, variable name 탭 완료가 변수 대소 문자를 무시할 수 있기를 바랍니다.

답변

2

대소 문자를 구별하지 않는 파일 시스템이 있으며 이러한 시스템에서는 파일 이름 완성이 대소 문자를 구분하지 않는 것이 좋습니다. 이상적인 세계에서 bash는 파일 경로의 구성 요소가 대소 문자를 구별하는지 여부를 알 수 있지만 실제로이 정보를 제공하는 표준 인터페이스가 없기 때문에 bash는 대소 문자를 구분하지 않는 파일 이름 완성을 명시 적으로 구성 할 수 있습니다. (bash manualon로 설정하면, 중점)

completion-ignore-case
    추가 readline과 파일명은 에게 대소 문자 구별 방식 매칭 및 완료를 수행한다. 기본값은 'off'입니다.

마찬가지로 glob 확장 및/또는 대소 문자가 대소 문자를 구분하지 않도록 설정할 수 있습니다.

하지만 bash 변수는 대소 문자를 구분하지 않습니다. $bash$BASH은 다른 변수입니다. bash 함수 이름, bash 내장 이름 및 bash 키워드와 유사합니다. Bash는 이들 모두를 사용하여 탭 완성을 할 수 있지만 파일 이름 대소 문자 구별에 상관없이 탭 완성은 대소 문자를 구분합니다. 즉 합리적인 정당성처럼 보이지만

는, 그 bash는 탭 완성은 항상 대소 문자를되도록 구성 할 수 있습니다 (파일 이름에 매핑 디렉토리와 bash는 명령 포함) 파일 이름에 대한 제외하고 민감한 을 경우입니다 밝혀 무신경. 신호 이름과 호스트 이름과 같이 대소 문자를 구분하지 않는 경우조차도 대/소문자를 구분할 수 있습니다.