대화형 셸에서 사용하기 위해 profile.d 스크립트에서 함수를 내보내려면 어떻게 해야 합니까?

대화형 셸에서 사용하기 위해 profile.d 스크립트에서 함수를 내보내려면 어떻게 해야 합니까?

일부 스크립트가 설치되어 있습니다./etc/profile.d내보내고 명령줄에서 사용할 수 있는 기능을 정의합니다. 예제 스크립트는 다음과 같습니다.

# This function should be available as a command.
function gcd () {
}

# Bash completions for gcd
_gcd_completions () {
}

complete -F _gcd_completions gcd

gcd그러면 터미널에서 이름이 지정된 명령을 사용할 수 있게 됩니다 .

로그인 셸에서는 잘 작동하지만 대화형 셸에서는 작동하지 않습니다(예: "'gcd' 명령을 찾을 수 없음"). 마치 X11에 로그인하여 거기에서 콘솔을 시작한 것처럼 보입니다.

대화를 찾았습니다여기내보낸 함수를 사용하는 것이 좋습니다 export -f. 나는 이전에 시도했습니다:

# This function should be available as a command.
function gcd () {
}

# Bash completions for gcd
_gcd_completions () {
}

export -f gcd
complete -F _gcd_completions gcd

그러나 이것은 행동을 바꾸지 않았습니다.

export저도 시도 해봤는데 declare -fx안되더군요.

X 터미널에서 직접 이동하면 source /etc/profile명령(및 완성, fwiw)이 작동하기 시작한다는 것을 알았습니다. 그래서 나는 구문을 알고 있으며 모든 것이 적어도 정확합니다./etc/구성 파일스크립트 실행 및 명령 설정. 이러한 대화형 쉘 콘솔에서는 자동으로 작동하지 않습니다.

또한 다른 환경에서 선언한 일부 환경 변수도 확인했습니다./etc/profile.d스크립트는 대화형 셸에서 사용할 수 있으므로/etc/구성 파일이 껍질에서 뭔가가 이루어지고 있습니다.

어떻게 해야 하나요?

관련 정보