В качестве дополнения, если вы используете оболочку, совместимую с bash, вы можете использовать переменную GLOBIGNORE, чтобы исключить результаты из сопоставления с образцом. От человека:
GLOBIGNORE
A colon-separated list of patterns defining the set of filenames
to be ignored by pathname expansion. If a filename matched by a
pathname expansion pattern also matches one of the patterns in
GLOBIGNORE, it is removed from the list of matches.
В вашем конкретном случае:
sh$ (GLOBIGNORE='*.pdf:*.txt'; ls -d *)
Обратите внимание, что я запускаю эту команду как вспомогательную оболочку (используя круглые скобки), чтобы не изменять переменную среды GLOBIGNORE моей интерактивной оболочки.
Ваш PATH
является не правильным, и значение PATH
в оболочке в сеансе входа в систему совершенно не имеет значения, как и сценарии запуска вашей оболочки.
Одной из особенностей систем управления службами (в целом, не ограничиваясь systemd ), является то, что они запускают все службы на основе единой единой среды, измененной только элементами определение службы (что бы это ни было ). Это не имеет ничего общего с тем, как оболочки входа в систему настраивают пользовательские среды для сеансов входа. (Нет, это также не root
среда сеанса входа в систему.)
В случае с systemd вашим определением службы является файл сервисной единицы, и если вы не измените PATH
в этой единице, будет любое значение по умолчанию , с которым все службы запускаются с . В случае с systemd это задокументировано; и /usr/local/lib/nodejs/node-v8.11.4/bin/
— это , а не в списке.
Если вы хотите, чтобы PATH
было чем-то другим, кроме значения по умолчанию для всех сервисов -, вам необходимо изменить настройки вашего сервисного подразделения с помощью настроек Environment=
, чтобы изменить его.