でデフォルトで をfoo
使用している というユーザーがいます。そのデフォルトのシェルを変更することはできません。 Foo には running というサービスがあり、そのすべての起動スクリプトと ENV 変数を含む .(ドット) ファイルは foo のホーム ディレクトリにあります。tcsh
/etc/passwd
xyz
ここで、そのサービスを実行するための起動スクリプトも作成され、/etc/init.d/xyz
bash で記述されて配置されます。
問題は、起動時にサービスが開始されず、ログイン時にデフォルトのユーザーから実行できないことです。 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 $script
tcshでスクリプトを実行するために使用する- スクリプト内のシェバン (最初の行) を に設定し、実行可能に設定します。その後は、コマンドとして
#!/bin/tcsh
で起動するだけです。$script