RedHat 7에서 Kerberos 티켓을 얻기 위해 다음 명령을 실행할 때:
krb my_user
다음을 다시 보냅니다.
Ticket for 'my_user' is valid until 08:36 (28/01)
이제 스크립트에서 이 명령을 실행해야 합니다. 디렉터리를 변경하지 않고 다음 내용으로 ksh 스크립트를 만듭니다.
#!/bin/ksh
krb my_user
스크립트를 실행하면 다음 오류가 발생합니다.
./script.ksh[2]: krb: not found [No such file or directory]
krb
명령줄에서 직접 명령을 실행하면 해당 명령을 어디서 찾을 수 있는지 알 수 없습니다.
나열하면 krb
명령이 별칭에 없습니다.
를 실행하면 locate krb
방금 호출된 항목이 반환되지 않습니다 krb
.
내가 실행하면 which krb
말한다
/usr/bin/which: no krb in (/usr/java/default/bin:/bin:/usr/bin:/usr/local/bin:/bin)
이 krb 명령이 내 스크립트에서 작동하도록 하려면 어떻게 해야 합니까?
답변1
쉘 프롬프트에서 사용 가능한 쉘 기능은 해당 쉘에서 호출된 스크립트에 자동으로 사용 가능하지 않습니다.
두 가지 고급 액세스 방법이 있습니다.
- 이 기능을 설정하는 스크립트를 가져옵니다. 이 작업을 수행하기 전에 스크립트가 수행하는 다른 작업에 대해 매우 명확하게 이해해야 합니다. 현지 지식이 없으면 안전한 옵션으로 권장할 수 없습니다.
- 내보내기 기능.
즉, 다음과 같이 후자 옵션을 구현할 수 있습니다.
$ export -f krb
$ yourscript.sh
export
로그인 시 실행되도록 이 명령을 쉘 구성 파일에 추가하는 것이 좋습니다 .