krb 命令在 ksh 脚本中不起作用

krb 命令在 ksh 脚本中不起作用

在 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 配置文件中,以便在登录时执行该命令。

相关内容