sourcing csh script не устанавливает переменную пути без Bad subtitute

Вам нужно указать вашему веб-серверу закрывать и снова открывать свои файлы журналов. например. если вы используете apache, вы должны выполнить apachectl graceful

0
16.03.2018, 19:14
2 ответа

Я могу продублировать это, только если выполню такой скрипт:

$ 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с пробелом вместо двоеточия, разделяющим элементы?)

1
28.01.2020, 02:43

Это не одно и то же runскрипт и sourceскрипт. Когда вы runзапускаете сценарий (с помощью ./script.sh), вы порождаете новый процесс, который будет выполнять сценарий. Тем временем процесс оболочки (, в котором вы написали ./script.sh), будет ждать завершения этого другого процесса и, возможно, перехватит вывод.

Порожденный процесс может изменять свою собственную среду (, например, pathпеременную ), но не среду своего родителя. Когда он завершится, этот процесс умрет, а родитель сохранит то же значение в path.

Вы хотите запустить родительский процесс set path=($path /sbin:/mscc/apps). Для этогонапишите source./script.shвместо ./script.sh. В этом случае строка #!/bin/cshне нужна, так как это просто комментарий.

1
28.11.2020, 15:17

Теги

Похожие вопросы