git bash의 Windows 대소문자 구분 동작을 끄는 방법은 무엇입니까?

git bash의 Windows 대소문자 구분 동작을 끄는 방법은 무엇입니까?

나는 사용한다Windows의 Git BashGit 사용 범위를 넘어서는 많은 bash 작업에 사용됩니다. 수년 동안 잘 작동했지만 대소 문자를 구분하지 않는 동작을 변경할 수 없습니다. 이런 식으로 자동화하는 것은 번거롭습니다.

플래그를 사용해보았습니다

shopt -u nocasematch

설명 .bashrc솔루션 #3에서그러나 그것은 문제를 해결하지 못합니다.

솔루션 #1이나 #2 모두 내가 찾고 있는 옵션이 아닙니다. 대문자 별칭, 대소문자 혼합 디렉터리, 일부 모두 소문자 파일, 대소문자 매핑에 대소문자가 너무 많기 때문입니다.

기본이 아닌 Linux 셸에서 대소문자 구분 자동 완성을 활성화하는 방법이 있습니까?

맛이 다르기 때문에 몇 가지 팁이나 제안을 기대했습니다.

답변1

두 가지 설정을 복원해야 하며 다음을 수행해야 nocaseglob합니다 nocasematch.

문서( man bash)는 다음과 같이 씁니다.

nocaseglob설정된 경우 bash경로 이름 확장을 수행할 때 대소문자를 구분하지 않고 파일 이름을 일치시킵니다. [...]

nocasematch 설정된 경우, 조건부 명령을 실행할 때 일치를 수행하거나, 패턴 대체 단어 확장을 수행하거나, 프로그래밍 가능한 완성의 일부로 가능한 완성을 필터링할 때 bash대소문자를 구분하지 않는 방식으로 패턴을 일치시킵니다 .case[[

내 Cygwin 환경에서는 다음이 설정됩니다 off(비록 두 가지 모두 onNTFS 파일 시스템의 Windows 중심 사용에 사용해야 하며 대소문자를 기억해야 하지만 대소문자를 구분하지 * * 함 ).

shopt | grep case
nocaseglob      off
nocasematch     off

이것이 귀하의 환경에 설정되어 있고 on이를 비활성화하려는 경우(비교 시 대소문자를 구분하도록) 다음 명령을 시도해 볼 수 있습니다.

shopt -u nocasematch nocaseglob

하지만 이것이 작동하지 않을 수도 있다는 점을 지적하고 싶습니다. Linux 기반 운영 체제에 설치된 NTFS 파일 시스템은 대소문자를 구분합니다( , , 및 별도의 파일을 생성하고 액세스할 수 Abc있음 aBC) abc. Windows 시스템의 동일한 파일 시스템은 대소문자를 구분하지 않는 것으로 처리되며 파일 탐색기 또는 Cygwin에서 세 파일 중 하나만 액세스할 수 있습니다. 세 파일 중 하나를 열려고 하면 "첫 번째" 문서만 반환됩니다. 이 수준의 세부 정보는 귀하가 요청하는 것보다 더 많은 것으로 생각되지만 유용할 경우를 대비해 추가하는 것뿐입니다.

추가 정보Cygwin에서나는 그것을 테스트하지 않았습니다원하는 것과 반대되는 구성을 시행하는 것 같기 때문입니다.

대소문자를 구분하는 파일 이름 Win32 하위 시스템에서 파일 이름은 대소문자가 유지되지만 대소문자를 구분하지 않습니다. Abc 및 aBc와 같이 대소문자만 다른 동일한 디렉터리의 두 파일에 액세스할 수 없습니다. NTFS(및 일부 원격 파일 시스템)는 대소문자 구분을 지원하지만 NT 커널은 기본적으로 이를 지원하지 않습니다. 대신 레지스트리 설정을 조정하고 재부팅해야 합니다. 따라서 Cygwin은 이 레지스트리 값을 변경하지 않는 한 대소문자 구분을 지원하지 않습니다.

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive Cygwin에서 대소문자를 구분하도록 하려면 레지스트리 값을 0으로 설정하고 컴퓨터를 다시 시작하여 활성화할 수 있습니다.

다른 관점으로는,시빈대소문자를 구분하는 자동 완성입니다. 디렉토리 Downloads와 디렉토리가 있는 dances경우 ls -d DTab하나의 디렉토리만 제공됩니다. 이것이 바로 여러분이 원하는 동작이라고 생각합니다. Git bash에 전혀 관심이 없다면 Cygwin과 해당 git패키지를 사용해 볼 수 있습니다.


* NTFS 자체는 대소문자를 구분합니다. 다만, Windows 환경에서 사용하면 대소문자는 기억하지만 대소문자 구분은 하지 않는 것 같아서 우리가 다뤄야 할 부분입니다.

관련 정보