Цитирую man-страницу о login.defs
ENV_PATH (string) Если задано, то будет использоваться для определения переменной окружения PATH при входе обычного пользователя в систему. Значение представляет собой разделенный двоеточием список путей (например, /bin:/usr/bin) и может предваряться PATH=. Значение по умолчанию - PATH=/bin:/usr/bin.
ENV_SUPATH (строка) Если установлено, то будет использоваться для определения переменной окружения PATH при входе в систему суперпользователя. Значение представляет собой разделенный двоеточием список путей (например, /sbin:/bin:/usr/sbin:/usr/bin) и может быть предшествовать PATH=. По умолчанию значение равно PATH=/sbin:/bin:/usr/sbin:/usr/bin.
Оба используются для определения переменной PATH обычного, суперпользователя изначально. В моем login.defs переменные ENV_PATH, ENV_SUPATH определены следующим образом
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
Я добавил нового пользователя 'foo'
sudo useradd foo
sudo passwd foo
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Когда я вхожу в систему как 'foo'
foo@naga-playground:/$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
Аналогично для 'root'
root@naga-playground:/home/pi/# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PATH может быть переопределена пользователем через .bashrc, .bash_profile, .zshrc ....
Чтобы сделать ответ полным
ENV_PATH используется для определения PATH для обычного пользователя
ENV_SUPATH используется для определения PATH для суперпользователя
Использование GNU sed (которое у вас есть, потому что вы пометили этот Linux):
$ echo $'Ala ma kota ,psa i kanarka\n, chyba . . .' | sed -zE 's/[[:space:]]([,.?!])/\1/g'
Ala ma kota,psa i kanarka, chyba...
-z
Это указывает sed читать весь текст сразу, а не читать в одной строке вовремя.
-E
Указывает sed использовать расширенный синтаксис регулярных выражений. Это устраняет необходимость в некрасивых обратных косых чертах.
s / [[: space:]] ([,.?!]) / \ 1 / g
Заменяет любые пробелы, за которыми следует один из ,
, .
, ?
или !
, только со знаком препинания.
Если вы хотите включить другие знаки препинания, просто добавьте их в квадратные скобки с помощью ,.?!
.
[[: space:]]
включает не только пробелы, но также символы табуляции, новые строки и т. Д.
Эта версия с одним или несколькими пробелами перед знаками препинания:
$ echo $'Ala ma kota ,psa i kanarka \n, chyba . . .' | sed -zE 's/[[:space:]]+([,.?!])/\1/g'
Ala ma kota,psa i kanarka, chyba...
В вопросе есть:
s/ ././g
Обратите внимание, что в регулярном выражении .
- это подстановочный знак: он соответствует чему угодно. Таким образом, .
соответствует пробелу, за которым следует любой символ . Эти два символа заменены на .
(поскольку сторона замены не регулярное выражение, .
является буквальной точкой). Это не то, на что вы надеялись.