Все,
Я использую xrdp для подключения к системе Centos 7. Я замечаю, что моя переменная среды PATH различается в зависимости от того, использую я RDP или SSH, и я не могу на всю жизнь понять, где это происходит.
Я проверил /etc/xrdp/startwm.sh, но весь код, связанный с PATH, уже закомментирован. Мой / etc / profile довольно стандартен, и в /etc/profile.d ничего такого нет. Кроме того, если бы он был где-то в /etc/profile[.d], то это применялось бы даже во время входа в систему по SSH.
Я видел, как об этом упоминалось несколько раз в разных местах Интернета без реального решения или объяснения.
У кого-нибудь есть объяснение, и кто может указать мне в правильном направлении?
Это сводит меня с ума, не зная, где это происходит!
РЕДАКТИРОВАТЬ:
Я должен был быть более ясным. Это сценарий RDP, с которым мне трудно разобраться. Я могу в значительной степени объяснить все махинации, связанные с PATH, которые я вижу во время сеанса SSH (или даже во время сеанса VNC, в основном в любом случае). Если я просматриваю настройки / etc / profile *, а также свой собственный ~ / .bash_profile, все становится понятным во время сеанса SSH. Но когда я использую RDP, все становится странно.
Помимо /etc/xrdp/startwm.sh, я проверил /etc/security/pam_env.conf, в котором все уже было закомментировано.
РЕДАКТИРОВАТЬ 2:
В сеансе входа в систему через SSH / обычный мой путь выглядит так:
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
В сеансе RDP мой PATH выглядит так:
/bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin
Я вижу в / etc / profile, где / usr / local / sbin и / usr / sbin добавляются (или добавляются в начале, если root).
В случае с RDP есть пара дополнений, а также некоторые вещи, которые меняются. Например, внезапно появляется / bin, а также / usr / XllR6 / bin. Кроме того, / usr / bin теперь находится перед / usr / local / bin. Я не хочу в основном эту последнюю часть.
Я знаю, что могу исправить это в моем собственном ~ / .bash_profile, но не понимаю, зачем мне это нужно. Не понимаю, почему путь запутался в такой степени.
Спасибо Джастин
Я не уверен, что это решит вашу проблему, поскольку это влияет на Ubuntu с XRDP и XFCE4. Тем не менее, шанс есть, так что давайте посмотрим.
Я столкнулся с аналогичной проблемой: переменная среды PATH была другой, когда я входил в систему через SSH и через XRDP. Конкретно, когда я открыл окно терминала в XRDP (xterm
) переменная PATH не была установлена с локальными путями пользователя (~/bin
, ~/.local/bin
, и т.д).
Однако эти пути присутствовали, когда я входил в систему через SSH.
Проблема была в не в XRDP, а в том, как сеанс Bash создается с помощью XTerm и SSH. Поскольку SSH создает сеанс входа в систему, загруженные файлы включаются /etc/environment
и ~/.profile
. В последнем были включены нужные мне пути.
Это было не так с XTerm. Это создает сеанс bash без входа в систему, и таким образом загружает /etc/bash.bashrc
и ~/.bashrc
.
Я мог это исправить, просто включив строку инициализации PATH из ~/.profile
в один из этих двух файлов. Поскольку я хотел, чтобы это повлияло на всех пользователей машины, я включил его в /etc/bash.bashrc
:
echo PATH="$HOME/bin:$HOME/.local/bin:$PATH" >> /etc/bash.bashrc
Вы можете найти больше информации о том, как работает man bash
У меня эта проблема была под 6.6. Не знаю, то же ли до 7 лет.
/etc/profile
устанавливает общесистемные переменные среды и добавляет пути "sbin" для пользователя "root". /etc/xrdp/startwm.sh
загружает этот файл в pre_start()
функция, которая выполняется в конце файла.
Но вершина /etc/xrdp/startwm.sh
выглядит так:
# if xinitrc exists use it instead, it should load user prefferences
# including desktop environment specified in /etc/sysconfig/desktop
if [ -f /etc/X11/xinit/xinitrc ]
then
. /etc/X11/xinit/xinitrc
exit 0
fi
Так что если /etc/X11/xinit/xinitrc
существуют, /etc/xrdp/startwm.sh
выполняет его и завершает работу, поэтому оставшиеся настройки не выполняются. / etc / X11 / xinit / xinitrc не загружает / etc / profile, по крайней мере, мой не загружал.
Я прокомментировал чек на xinitrc
в startwm.sh
:
# if xinitrc exists use it instead, it should load user prefferences
# including desktop environment specified in /etc/sysconfig/desktop
#if [ -f /etc/X11/xinit/xinitrc ]
#then
# . /etc/X11/xinit/xinitrc
# exit 0
#fi
Это решило проблему для меня, и я не заметил разницы в работе XRDP.