Вам нужно указать вашему веб-серверу закрывать и снова открывать свои файлы журналов. например. если вы используете apache
, вы должны выполнить apachectl graceful
Я могу продублировать это, только если выполню такой скрипт:
$ echo $path
/usr/local/bin /usr/bin /usr/local/sbin /usr/sbin
$./script.csh
setting path
$ echo $path
/usr/local/bin /usr/bin /usr/local/sbin /usr/sbin
Если вы вместо источник скрипт, вы увидите другое поведение:
$ source script.csh
setting path
$ echo $path
/usr/local/bin /usr/bin /usr/local/sbin /usr/sbin /sbin:/mscc/apps
(Возможно, вы хотите /sbin /mscc/apps
с пробелом вместо двоеточия, разделяющим элементы?)
Это не одно и то же run
скрипт и source
скрипт. Когда вы run
запускаете сценарий (с помощью ./script.sh
), вы порождаете новый процесс, который будет выполнять сценарий. Тем временем процесс оболочки (, в котором вы написали ./script.sh
), будет ждать завершения этого другого процесса и, возможно, перехватит вывод.
Порожденный процесс может изменять свою собственную среду (, например, path
переменную ), но не среду своего родителя. Когда он завершится, этот процесс умрет, а родитель сохранит то же значение в path
.
Вы хотите запустить родительский процесс set path=($path /sbin:/mscc/apps)
. Для этогонапишите source./script.sh
вместо ./script.sh
. В этом случае строка #!/bin/csh
не нужна, так как это просто комментарий.