일부 스크립트가 설치되어 있습니다./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/구성 파일이 껍질에서 뭔가가 이루어지고 있습니다.
어떻게 해야 하나요?