bash 環境で起動時に tcsh スクリプトを実行する

bash 環境で起動時に tcsh スクリプトを実行する

でデフォルトで をfoo使用している というユーザーがいます。そのデフォルトのシェルを変更することはできません。 Foo には running というサービスがあり、そのすべての起動スクリプトと ENV 変数を含む .(ドット) ファイルは foo のホーム ディレクトリにあります。tcsh/etc/passwdxyz

ここで、そのサービスを実行するための起動スクリプトも作成され、/etc/init.d/xyzbash で記述されて配置されます。

問題は、起動時にサービスが開始されず、ログイン時にデフォルトのユーザーから実行できないことです。 foo ユーザーに su して、サービスを開始するスクリプトを実行する場合にのみ実行できます。

もし私がこれを気に入ったら

sudo su foo /home/foo/xyzのようなエラーが表示されますthen: then/endif not found.

そこで、私はbashのinit.dスクリプトから起動時にtcshプログラムを実行したいのです。現在、私はこれを試しています

su - foo -c "source /home/foo/.env_vars && /home/foo/bin/xyz start"しかし、これは起動時にサービスを開始するものではありません。

起動時に tcsh スクリプトを実行する方法がわかりません。

答え1

次のいずれかを行うことができます。

  • tcsh -c $scripttcshでスクリプトを実行するために使用する
  • スクリプト内のシェバン (最初の行) を に設定し、実行可能に設定します。その後は、コマンドとして#!/bin/tcshで起動するだけです。$script

関連情報