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
シェルプロンプトで使用可能なシェル機能は、そのシェルから呼び出されたスクリプトでは自動的には使用できません。
2つの高度なアクセス方法があります。
- この機能を設定するスクリプトを取得します。これを行う前に、スクリプトが実行する他の作業について非常に明確に理解する必要があります。現地の知識がなければ、安全なオプションとしてお勧めできません。
- エクスポート機能。
つまり、次のように後者のオプションを実装できます。
$ export -f krb
$ yourscript.sh
export
ログイン時に実行されるように、このコマンドをシェル設定ファイルに追加することをお勧めします。