Bash 완료는 sudo secure_path에 대한 변경 사항을 무시합니다.

Bash 완료는 sudo secure_path에 대한 변경 사항을 무시합니다.

루트의 $PATH(및 sudo의 secure_path)에 새 경로(이 경우 /usr/lib/cyrus/bin)를 추가하고 싶습니다. 그런데 저는 데비안을 사용하고 있습니다

먼저 /etc/bash.bashrc를 사용하여 루트의 $PATH에 추가했습니다. 지금까지는 매우 좋았습니다.

# which cyr_expire
/usr/lib/cyrus/bin/cyr_expire
# cyr<Tab><Tab>
cyradm cyr_dbtool cyrdeliver cyr_deny cyr_df cyrdump cyr_expire cyr_info cyrmaster cyr_sequence cyrus cyr_userseen

Bash Completion은 잘 작동합니다.

다음으로 /etc/sudoers에 있는 sudo의 secure_path에 이것을 추가했습니다.

Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/cyrus/bin"

sudo가 새 디렉토리를 잘 처리하는지 확인합니다.

$ sudo which cyr_expire
/usr/lib/cyrus/bin/cyr_expire

알았어, 그게 다야

그러나 bash 완료는 새 디렉토리를 고려하지 않는 것 같습니다.

$ sudo cyr<Tab><Tab>
cyradm cyrdeliver cyrmaster cyrus 

Bash 완성은 sudo를 통해 호출할 때 /usr/lib/cyrus/bin(예: cyr_dbtool, cyr_deny, cyr_expire 등) 아래의 바이너리를 제안하지 않습니다.

내가 놓친 게 무엇입니까?

관련 정보