2
필자는 왜 PC에서 파일 시스템의 bash 자동 완성이 느린 지 알아 내려고합니다. 필자의 리눅스 컴퓨터는 PAM을 통해 AD에 연결되어 있으며 bash는 자동 완성을 위해 TAB을 사용할 때마다 네트워크 마운트 (PAM을 쿼리하기 때문에 느리다)를 쿼리하려고하는 것으로 의심하고있다.bash 확장을 디버깅하는 방법은 무엇입니까?
나는 set -x
을 시도하고 내가 /var
에 자동 완성을 수행 할 때 가장 느린 동작은 다음과 같은 라인 : I가 네트워크에 연결하고 때
[[ /var == ~* ]]
은 또한, 다음 줄은 bash는 실행하는 데 몇 초 정도 걸립니다 이 연결되지 않은 경우 즉시 반환하는 반면 :
TEMP=~*
나는에 ~*
을 확장하거나 해결 방법을 찾기 위해 노력하고 무엇 bash는 알고 싶습니다.
을 알게 될 것이다 예를 에 대한 strace를 그것을 실행하려고'[[$ foo는 = " ~ "*]]''[[$ foo = ~ *]]'보다 훨씬 더 빠릅니다. 물결 확장 기능을 그대로 유지하고 싶다면'[[$ foo = ~/*]]'가 더 빠를 것입니다. 단지 자신의 * 홈 디렉토리에 있는지 여부 만보고 있기 때문입니다. –
그건 그렇고, 당신은 파일과 라인 번호를 모두 포함하는'PS4 '를 설정하는 것을 고려할 수 있습니다, 그래서 당신은 문맥 안에서 잘못된 코드를 볼 수 있습니다. 예를 들면 :'PS4 = ': $ BASH_SOURCE : $ LINENO +''는 당신에게 각 명령의 소스 파일과 라인을 줄 것입니다. –
'getent passwd'는 그 비교에 비교적 오랜 시간이 걸립니까? –