在 bash 环境中启动时运行 tcsh 脚本

在 bash 环境中启动时运行 tcsh 脚本

我有一个名为 的用户,默认情况下foo它在 中使用。我无法更改该默认 shell。Foo 有一个名为running 的服务,它的所有启动脚本和包含 ENV 变量的 .(dot) 文件都位于 foo 的主目录中。tcsh/etc/passwdxyz

现在还创建了一个启动脚本来运行该服务并将其放置在/etc/init.d/xyz用 bash 编写的其中。

现在的问题是服务无法在启动时启动,我也无法在登录时从默认用户运行它。只有当我 su 到 foo 用户并执行脚本来启动服务时,它才有可能运行。

如果我喜欢这个

sudo su foo /home/foo/xyz它会向我显示类似的错误then: then/endif not found.

因此,我想运行一个 tcsh 程序,在启动时从 bash 中的 init.d 脚本运行。目前我尝试这样做

su - foo -c "source /home/foo/.env_vars && /home/foo/bin/xyz start"但这不会在启动时启动服务。

我不确定如何让 tcsh 脚本在启动时执行。

答案1

您可以:

  • 使用tcsh -c $scripttcsh 运行脚本
  • 将脚本中的 shebang(第一行)设置为并将其设置为可执行;然后您可以使用该命令#!/bin/tcsh启动它。$script

相关内容