Noob здесь: у меня проблема, когда я получаю доступ к своему серверу через SSH, $ PATH правильный
root@ks391320:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Но когда я открываю свой сервер через сеанс XRDP и иду в терминал, он показывает неверный путь :
root@ks391320:~# echo $PATH
/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin
И это создает проблему, потому что, когда я пытаюсь установить что-то с помощью «Package Installer», он показывает эту ошибку (среди прочих)
dpkg: warning: 'ldconfig' not found in PATH
Для Ubuntu-18.04 отредактируйте /etc/pam.d/xrdp-sesman
и введите следующие строки в начале:
session required pam_env.so readenv=1 envfile=/etc/environment
session required pam_env.so readenv=1 envfile=/etc/default/locale
Полное раскрытие: я не использую Ubuntu ... но у меня была такая же проблема с Debian.
xrdp запускает /etc/xrdp/startwm.sh (если только Ubuntu не изменил это местоположение). Я добавил эту строку:
. /etc/profile
в начало /etc/xrdp/startwm.sh, и теперь PATH установлен правильно.
Для Ubuntu добавление
. /etc/environment
в начало /etc/xrdp/startwm.sh может сделать то же самое.
Это тоже меня озадачило. /etc/environment
не является сценарием оболочки, поэтому его нельзя назвать одним. Что мне помогло, так это отредактировать скрипт "sesman" менеджера сессий xrdp в pam. Я добавил строку «сеанс» в мой файл /etc/pam.d/sesman
:
#%PAM-1.0
session required pam_env.so readenv=1 user_readenv=0
@include common-auth
@include common-account
@include common-session
@include common-password
Это заставляет менеджер сеанса загружать файл /etc/environment
при входе в систему.
Благодаря предыдущим ответам я пришел к такому решению:
cat /etc/xrdp/startwm.sh | sed "s/. \/etc\/X11\/Xsession/. \/etc\/environment/" > ./startwm.sh && echo ". /etc/X11/Xsession" >> ./startwm.sh && sudo mv ./startwm.sh /etc/xrdp/startwm.sh && sudo chmod 755 /etc/xrdp/startwm.sh
Может быть не самым оптимальным, но работающим (Ubuntu 12.04).
Общесистемный путь по умолчанию определен в /etc/environment
. Во-первых, убедитесь, что установлено правильное значение. Для справки, вот мой, который совпадает с установкой по умолчанию:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
Если /etc/environment
нормальный, но у вас все еще есть проблемы, вы можете переопределить настройку по умолчанию PATH в ~/.bashrc
. Например, у меня есть это в моем .bashrc, который добавляет каталог в мой PATH, если и только если он существует и еще не находится в моем PATH:
if [ -d "$HOME/bin" ]; then
if [[ $PATH =~ $HOME/bin ]]; then :
else export PATH="$HOME/bin:$PATH"
fi
fi
Так как из вашего скриншота видно, что вы разрешены входы root, не забудьте также установить root .bashrc. (Кстати, поскольку root не может войти в систему по умолчанию в Ubuntu, эта конфигурация предположительно менее проверена и может быть связана с вашей проблемой.)
Если первые два метода потерпите неудачу, затем проверьте, делает ли ваш XRDP-клиент что-то экзотическое. Если это так, вам придется либо настроить его для нормальной работы, либо определить способ его обойти.
Я немного осмотрел систему. Вы можете найти все места в вашей системе, в которых указан PATH, с помощью следующей команды (там есть sudo
, потому что некоторые файлы в /etc
не читаются обычными пользователями):
sudo egrep -nr '\bPATH' /etc | less
Я думаю, что это Можно игнорировать многие из этих мест, что приводит к следующей команде:
sudo egrep -nr '\bPATH' /etc | egrep -v '^/etc/(init|rc|ppp|bash_c)' | egrep -v '^Binary' | less
Один файл, который выглядит возможным (хотя я действительно не знаю об этом слишком много), это /etc/login.defs
. Вы могли бы взглянуть на это.
Кроме того, вы также можете создавать свои точечные файлы:
egrep -nr '\bPATH' $HOME/.* | less
В теории добавление
. /etc/environment
будет работать, но это не так. Я просто положил его на верхнюю часть моего .bashrc, чтобы исправить проблему
@ John: Я полагаю, вам нужно проверить ваш /etc/xrdpstartwm.sh - первые строки в моем файле читаются как
if [ -f /etc/X11/xinit/xinitrc ]
then
. /etc/X11/xinit/xinitrc
exit 0
fi**
будет выполнен вместо этого - и это не сильно поможет добавить
. /etc/environment
в /etc/xrdpstartwm.sh. : -)
/ на герц