Если /var/log/journal
не существует, по умолчанию systemd journal
будет храниться в памяти и, таким образом, будет потерян при перезагрузке.
Просмотрите официальную документацию по журналу systemd, особенно список конфигурационных файлов в верхней части, которые вы, возможно, захотите пересмотреть, и опцию Storage=.
Возможно, запись в журнал происходит, но теряется при перезагрузке до того, как вы сможете просмотреть журнал, из-за конфигурации Storage=
для журнала systemd.
Вы правы, это означает 'если $PATH существует - и не является нулевым - тогда добавьте :$PATH'.
Вам нужно проверить, существует ли $PATH, потому что вы не хотите добавлять ведущее (или последующее) двоеточие, если $PATH не определен. Имя каталога нулевой длины (null) в пути, как в :/usr/local/bin:/usr/bin
, или /usr/local/bin:/usr/bin:
, или /usr/local/bin::/usr/bin
, означает поиск в текущем каталоге.
Выдержка из man bash
:
PATH ...
A zero-length (null) directory name in the value of PATH indicates
the current directory. A null directory name may appear as two
adjacent colons, or as an initial or trailing colon.
...
Это, вероятно, не то, что вы хотите сделать.
Следующие две строки делают то же самое:
PATH=":/bin" # search current directory, then /bin
PATH=".:/bin"
Форма :+
является формой расширения параметра:
${параметр:+[слово]} : Использовать альтернативное значение.
Если параметр не задан или null, будет подставлен null; в противном случае будет использовано расширение слова (или пустая строка, если слово опущено) будет заменено.
Другими словами, если переменная $var
определена, то echo ${var:+foo}
выведет foo
, а если нет, то пустую строку.
Второй :
не представляет собой ничего особенного. Это символ, используемый в качестве разделителя в списке каталогов в $PATH
. Так, PATH="/usr/local/bin:/usr/bin${PATH:+:${PATH}}"
- это сокращенный способ написать:
if [ -z "$PATH" ]; then
PATH=/usr/local/bin:/usr/bin
else
PATH=/usr/local/bin:/usr/bin:$PATH
fi
Это просто хитрый трюк, чтобы избежать добавления лишнего :
, когда $PATH
не установлен. Например:
$ PATH="/usr/bin"
$ PATH="/new/dir:$PATH" ## Add a directory
$ echo "$PATH"
/new/dir:/usr/bin
Но если PATH
не установлен:
$ unset PATH
$ PATH="/new/dir:$PATH"
$ echo "$PATH"
/new/dir:
А :
сам по себе добавляет текущий каталог к $PATH
. Использование PATH="/new/dir${PATH:+:$PATH}"
позволяет избежать этого. Конечно, вы можете использовать PATH="${PATH:+${PATH}:}/usr/local/bin:/usr/bin"
, если хотите, или вы можете использовать PATH="$PATH:/usr/local/bin:/usr/bin"
, если предпочитаете. Единственное различие заключается в том, что в первом случае может добавиться дополнительный :
, тем самым добавляя ваш текущий каталог в $PATH
.