У меня есть пользователь, который по умолчанию foo
использует . Я не могу изменить эту оболочку по умолчанию. У Foo есть служба, которая называется running, для которой все скрипты запуска и файл .(dot), содержащий переменные ENV, находятся в домашнем каталоге foo.tcsh
/etc/passwd
xyz
Теперь также создается скрипт запуска для запуска этой службы и помещается в /etc/init.d/xyz
него, написанный на bash.
Теперь проблема в том, что служба не запускается при загрузке, и я не могу запустить ее из-под своего пользователя по умолчанию при входе в систему. Запуск возможен только тогда, когда я вхожу в пользователя foo и выполняю скрипт для запуска службы.
Если я сделаю это так
sudo su foo /home/foo/xyz
он покажет мне ошибки типа then: then/endif not found.
.
Итак, я хочу запустить программу tcsh для запуска при загрузке из скрипта init.d, который находится в bash. В настоящее время я попытался сделать это
su - foo -c "source /home/foo/.env_vars && /home/foo/bin/xyz start"
но это не запускает службу во время загрузки.
Я не уверен, как заставить скрипт tcsh выполняться во время загрузки.
решение1
Вы также можете:
- использовать
tcsh -c $script
для запуска скриптов с tcsh - установите shebang (первую строку) в скрипте
#!/bin/tcsh
и сделайте его исполняемым; затем вы можете просто запустить его$script
как команду.