在 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
命令不在别名中。
如果我运行 alocate krb
它不会返回任何刚刚调用的内容krb
。
如果我运行which krb
它说
/usr/bin/which: no krb in (/usr/java/default/bin:/bin:/usr/bin:/usr/local/bin:/bin)
我应该怎么做才能使这个 krb 命令在我的脚本中起作用?
答案1
在 shell 提示符下可用的 shell 函数不会自动可供从该 shell 调用的脚本使用。
有两种高级访问方式。
- 获取设置该函数的脚本。在执行此操作之前,您需要非常清楚地了解该脚本还执行了哪些操作;如果没有一些当地知识,我不能推荐这是一个安全的选择。
- 导出函数。
简而言之,您可以像这样实现后一个选项:
$ export -f krb
$ yourscript.sh
您最好将该export
命令添加到 shell 配置文件中,以便在登录时执行该命令。