에서 기본적으로 foo
사용하는 사용자가 있습니다 . 해당 기본 쉘을 변경할 수 없습니다. Foo에는 running이라는 서비스가 있는데 , 모든 시작 스크립트와 ENV 변수를 포함하는 .(dot) 파일이 foo의 홈 디렉터리에 있습니다.tcsh
/etc/passwd
xyz
이제 해당 서비스를 실행하기 위한 시작 스크립트도 생성되어 /etc/init.d/xyz
bash로 작성됩니다.
이제 문제는 부팅 시 서비스가 시작되지 않고 로그인 시 기본 사용자에서도 서비스를 실행할 수 없다는 것입니다. foo 사용자로 로그인하고 스크립트를 실행하여 서비스를 시작하는 경우에만 실행할 수 있습니다.
내가 이런 짓을 하면
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로 스크립트를 실행하는 데 사용- 스크립트의 shebang(첫 번째 줄)을 다음으로 설정
#!/bin/tcsh
하고 실행 가능하도록 설정합니다. 그런 다음$script
명령으로 시작할 수 있습니다 .