LINUX.ORG.RU

$PATH debian11

 ,


0

1

Кажется разработчики снова что-то улучшили и я теперь не знаю что делать. ГУИ игнорит все конфиги, где указываются пути к исполняемым файлам, и берёт их где-то в неведомом для меня месте

Подробнее о пациенте:

lab@nb11:~$ uname -a
Linux nb11 5.10.0-17-amd64 #1 SMP Debian 5.10.136-1 (2022-08-13) x86_64 GNU/Linux

Подробнее о проблеме:

lab@nb11:~$ cat /etc/profile
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

if [ "$(id -u)" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

if [ "${PS1-}" ]; then
  if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
    # The file bash.bashrc already sets the default PS1.
    # PS1='\h:\w\$ '
    if [ -f /etc/bash.bashrc ]; then
      . /etc/bash.bashrc
    fi
  else
    if [ "$(id -u)" -eq 0 ]; then
      PS1='# '
    else
      PS1='$ '
    fi
  fi
fi

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

PATH="$PATH:/icarix/bin"
export PATH

lab@nb11:~$ cat /etc/profile.d/icarix.sh
  ICARIX=/icarix
  PATH=$PATH:/icarix/bin
  export ICARIX PATH 


lab@nb11:~$ cat $HOME/.bash_profile 

PATH=$PATH:/icarix/bin
export PATH 

и вот после всего вышеизложенного набираю в гуёвом терминале:

lab@nb11:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
lab@nb11:~$ 

Теперь прыгаю в консоль, и вот что вижу:

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/icarix/bin:/icarix/bin:/icarix/bin
Все три раза!

Вот скажите откуда и почему такое распи... тоесть особенность. В прошлой версии деб10... не помню точно (старый винт умер) достаточно было

lab@nb11:~$ cat /etc/profile.d/icarix.sh
  ICARIX=/icarix
  PATH=$PATH:/icarix/bin
  export ICARIX PATH 
и всё было нормально.

Что теперь не так, и как сделать?


Дело в DM. ЕМНИП, только GDM и SDDM в Debian нормально задают переменные. Поставь один из них вместо текущего, лучше SDDM, GDM тебе по зависимостям весь GNOME притащит.

Vsevolod-linuxoid ★★★★★
()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/icarix/bin:/icarix/bin:/icarix/bin

Все три раза!

Можно проверять путь на наличие каталога перед его добавлением:

path_append () {
    case "$PATH" in
        *":$1") ;;
        *":$1:"*) ;;
        "$1:"*) ;;
        *) PATH="$PATH:$1" ;;
    esac
}

path_append "/icarix/bin"
No
()
Ответ на: комментарий от Vsevolod-linuxoid

Да уж, пожалуй надо избавляться от дурных ДМ, я как то так и сделаю. Только хотелось бы заодно ещё понять, а откуда этот " DM. ЕМНИП " берёт пути?

Гном у меня и так стоит, так и GDM наверно тоже уже.. А не подскажете команду как её хотя бы на ту же GDM свичнуть? Я до сих пор к systemd не привык, совсем его не понимаю.

icarus
() автор топика

«Кошка скребет на свой хребет.»

/icarix/bin

Вот и наскреб. Разработчики сейчас удаляют из корня даже то, что там было испокон веков, а ты тянешь туда всякую хрень, которая там нафиг не нужна.

Теперь прыгаю в консоль, и вот что вижу:

…детская игра - придумать свой язык, чтобы его никто не понимал.

andytux ★★★★★
()
Ответ на: комментарий от andytux

Чем мешает что-то в корне? Разве иерархия каталогов не условность?? Э.. тоесть проблемы с путями в графике, это из-за того что у меня тихо лежит в корне что-то нестандартное???

Хм, не знаю доподлинно чем там занимаются разработчики, но глядя на их творения у меня складывается впечатление что наибольшие творческие силы они отдают занятию онанизмом. Впрочем, я не специалист, строго не судите. Наверное менять init на systemd было совершенно необходимо. Для меня же это только замена уже привычного интерфейса на совершенно новый и непонятный. Вот покупаете новую машину, а там разработчики улучшили - газ теперь слева, тормоз справа, а ручник вы второй месяц найти не можете. Чем занимались разработчики? Я не знаю, я не специалист. Я выше предположил чем.

Где лежат конфиги из которых lightdm берёт пути? Я ещё не встретил человека, который это знает. А раньше и проблемы не было. Её кто то из разработчиков взял да и создал.

А это вам как:

lab@nb11:~$ cat /etc/X11/default-display-manager
/usr/sbin/gdm3
lab@nb11:~$ pstree
 ...
        ├─lightdm─┬─Xorg───9*[{Xorg}]
        │         ├─lightdm─┬─gnome-session-c─┬─gnome-session-b───3*[{gnome-session-b}]
        │         │         │                 └─ssh-agent
        │         │         └─2*[{lightdm}]
        │         └─2*[{lightdm}]

 ...

зачем вообще нужен файл /etc/X11/default-display-manager ? Чтобы мне голову поморочить?

icarus
() автор топика
Ответ на: комментарий от Rootlexx
echo 'PATH=${PATH}:/icarix/bin' >~/.config/environment.d/icarix.conf

тоже не работает. Пробовал баловаться с /etc/environment - если туда прописать PATH=$PATH:/icarix/bin то кроме этой записи никаких путей не появляется , то есть

echo $PATH
PATH=$PATH:/icarix/bin

вот прямо так и выдаёт

icarus
() автор топика
Ответ на: комментарий от andytux

Да что там сутки! Неделя прошла, а я так никаких проблем с кавычками не вижу.. Объясните мне только одно. Если в графике (lightdm это или что другое, не выяснил точно до сих пор) не читается ни /etc/profile, ни /etc/profile.d/*, ни ещё какой другой конфиг, который используется при входе в консоль, то откуда же в графике вообще берётся переменная $PATH ? Из каких конфигов? Куда их спрятали и зачем?

Казалось бы вопрос элементарный, не о тонкостях сборки ядра речь, элементарно - о глобальных переменных! Никто ничего не слышал, почему-то. Что же, на форумах специалистов вообще нет что ли? Как так?

icarus
() автор топика
Ответ на: комментарий от icarus
ubuntu@ubuntu:~$ PATH='${PATH}':"${PATH}"
ubuntu@ubuntu:~$ echo $PATH
${PATH}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Очень внимательно смотри, трижды внимательно. Подсказка: кавычки бывают разные.

andytux ★★★★★
()
Последнее исправление: andytux (всего исправлений: 1)
Ответ на: комментарий от andytux

Ах, боже-ж мой! Это-то ясно. Кавычки я ставил для echo

lab@nb11:~$ echo 'PATH=${PATH}:/icarix/bin' >justtestfile
lab@nb11:~$ cat justtestfile
PATH=${PATH}:/icarix/bin

в итоге, в файле уже нет никаких кавычек. Это обычное дело для .profile например

lab@nb11:~$ cat .profile
...
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi
...

Это не я писал, это «с завода» так ) . Другое дело, что /etc/environment оказался на это не рассчитан.. Ну да хрен же с ним. Дело то не в нём. А дело всё в том, что неясно откуда же в графике вообще берётся переменная $PATH ? Из каких конфигов? Куда их спрятали и зачем? That`s the question! (Как писал Шекспир))

icarus
() автор топика
Ответ на: комментарий от icarus

Поставил tdm. С путями стало норм. Стало быть можно сказать точно только то что дело было и вправду в lightdm. А вот откуда lightdm брал пути, остаётся видимо загадкой века..

icarus
() автор топика