Ausführen von Tcsh-Skripten beim Start in der Bash-Umgebung

Ausführen von Tcsh-Skripten beim Start in der Bash-Umgebung

Ich habe einen Benutzer namens , der standardmäßig in fooverwendet . Ich kann diese Standard-Shell nicht ändern. Foo hat einen Dienst namens running, für den sich alle Startskripte und .(dot)-Dateien mit ENV-Variablen im Home-Verzeichnis von foo befinden.tcsh/etc/passwdxyz

Jetzt wird auch ein Startskript zum Ausführen dieses Dienstes erstellt und darin platziert, /etc/init.d/xyzdas in Bash geschrieben ist.

Das Problem besteht nun darin, dass der Dienst beim Booten nicht gestartet wird und ich ihn auch beim Anmelden nicht von meinem Standardbenutzer aus ausführen kann. Er kann nur ausgeführt werden, wenn ich mich als Foo-Benutzer einlogge und das Skript ausführe, um den Dienst zu starten.

Wenn mir das gefällt

sudo su foo /home/foo/xyzes werden mir Fehler wie angezeigt then: then/endif not found..

Ich möchte also ein tcsh-Programm ausführen, das beim Booten von einem init.d-Skript ausgeführt wird, das sich in Bash befindet. Derzeit habe ich versucht, dies zu tun

su - foo -c "source /home/foo/.env_vars && /home/foo/bin/xyz start"Der Dienst wird jedoch beim Booten nicht gestartet.

Ich bin nicht sicher, wie ich ein Tcsh-Skript beim Booten ausführen kann.

Antwort1

Du kannst entweder:

  • verwenden Sie tcsh -c $scriptzum Ausführen der Skripte mit tcsh
  • Setzen Sie den Shebang (erste Zeile) im Skript auf und machen Sie es ausführbar. Sie können es dann einfach mit dem Befehl #!/bin/tcshstarten .$script

verwandte Informationen