我有一个名为 的用户,默认情况下foo
它在 中使用。我无法更改该默认 shell。Foo 有一个名为running 的服务,它的所有启动脚本和包含 ENV 变量的 .(dot) 文件都位于 foo 的主目录中。tcsh
/etc/passwd
xyz
现在还创建了一个启动脚本来运行该服务并将其放置在/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 $script
tcsh 运行脚本 - 将脚本中的 shebang(第一行)设置为并将其设置为可执行;然后您可以使用该命令
#!/bin/tcsh
启动它。$script