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에서 사용하는 쉘일 수도 있습니다.
ksh93
Linux(예: yum install ksh
CentOS/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