Linux에서 전역적으로 기능을 설정하는 방법

Linux에서 전역적으로 기능을 설정하는 방법

AIX에는 함수 이름을 호출하여 전역적으로 액세스할 수 있는 FPATH 설정 함수가 있습니다. 저는 이 기능을 Linux에서 복제하려고 합니다. $PATH 변수에 함수가 설정되어 있고 스크립트를 가져오려고 합니다. 하지만 여전히 "함수를 찾을 수 없습니다"라는 오류가 발생합니다.

절대 경로를 사용하여 함수 스크립트를 호출하면 작동합니다. 예: FmtMg는 /usr/local/lib 디렉토리에 파일을 저장하는 기능입니다.

export $PATH=$PATH:/usr/local/lib/FmtMg
source /usr/local/lib/FmtMg

위의 방법을 모두 시도했지만 여전히 실패했습니다. 아래는 이 기능을 테스트하는 스크립트입니다.

#!/bin/ksh
set -u # all variables must be set

unset -f FmtMg
autoload FmtMg

GM=`basename $0`

print "Testing FmtMg\n"

FmtMg  -p$GM -l$LINENO -s0 "FmtMg Test Completed."

답변1

FPATH함수 입니다 ksh. 이는 아마도 AIX에서 사용하는 쉘일 것입니다. 나는 이 방법이 작동할 것이라고 믿지 않습니다 bash. Linux에서 사용하는 쉘일 수도 있습니다.

ksh93Linux(예: yum install kshCentOS/RedHat, Debian)를 사용 apt-get install ksh하고 로그인 셸을 이 값으로 설정하면 동일한 방식으로 작동합니다. (나는 추천 ksh93하고아니요 pdksh완전히 호환되지 않기 때문입니다 pdksh.)

내 컴퓨터에서:

$ echo ${.sh.version}
Version AJM 93u+ 2012-08-01

$ grep FPATH ~/.profile 
export FPATH=$HOME/fns

해당 디렉토리에는 "loop"에 대한 함수 정의가 있습니다.

$ head -3 $FPATH/loop
# A loop function: loop var from to 'commands'
function loop
{

사용하기 전에 ksh함수라는 것을 알 수 있지만 아직 정의되지 않았습니다.

$ whence -v loop
loop is an undefined function

사용하려고 하면 항목에서 ksh자동으로 정의됩니다.$FPATH

$ loop i 1 5 'echo $i'
1
2
3
4
5

$ whence -v loop      
loop is a function

관련 정보