LINUX.ORG.RU

Если имеются ввиду стартовые скрипты (/etc/profile, /etc/profile.d/*, ~/.bash_profile, ~/.bashrc и т.д.), то нет. В man bash описан порядок, в котором они запускаются.

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

В этих скриптах переменная задана верно, но после перехода на openrc она задается не правильно, вот думаю что оно как-то ее меняет.

Deleted
()
Ответ на: комментарий от mtk

В смысле «после перехода на openrc»?

На debian решил потестировать экспериментальный openrc.

Было так:

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin

Стало так:

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

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

Ну дык в sysvinit и openrc разные стартовые скрипты. С чего ты взял, что именно в sysvinit они правильные? Во многих дистрах вообще убрали /usr/games, например, а /sbin и /usr/sbin есть только в рута.

В порядке вброса: systemd исправляет фрагментацию между дистрами именно в таких вещах.

mtk
()
Ответ на: комментарий от Deleted

/etc/profile

if [ "$EUID" = "0" ] || [ "$USER" = "root" ] ; then
        PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:${ROOTPATH}"
else
        PATH="/usr/local/bin:/usr/bin:/bin:${PATH}"
fi
export PATH

megabaks ★★★★
()
Ответ на: комментарий от megabaks
# /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:/sbin:/usr/sbin"
fi
export PATH

Есть такое и до перехода на openrc работало.

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

Значит либо /etc/profile вообще не читается, либо openrc наново устанавливает PATH.

Если тебе так надо /sbin и /usr/sbin, добавь

export PATH="$PATH:/sbin:/usr/sbin"
в ~/.bash_profile.

mtk
()
Ответ на: комментарий от Deleted

С того, что ты сменил sysvinit на openrc. Не благодари.

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

Там оно и так есть:

PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin"
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

Deleted
()
Ответ на: комментарий от mtk

Но не работает, помню подобная фигня была при переходе на wheezy(тогда и добавил ~/.profile, как советовали в баг-репорте)

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

но мне удобнее набирать ifconfig

ls -l /bin/ifconfig 
lrwxrwxrwx 1 root root 14 фев 16 04:25 /bin/ifconfig -> /sbin/ifconfig
roman77 ★★★★★
()

Есть-ли возможность узнать какой из скриптов последним изменял значение переменной(конкретно $PATH)?

нет. Разве что set -x во всех скриптах, а потом grep.

emulek
()

Есть-ли возможность узнать какой из скриптов последним изменял значение переменной(конкретно $PATH)?

Есть Unix-way.

берёш src пакет bash (ну либо sh)

патчиш интерпретатор в части присвоения переменых логированием в ...

компиляеш,подменяеш,узваеш,возвращаеш,ПРОФИТ

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

патчиш интерпретатор в части присвоения переменых

это называется «героически решаешь созданные тобой проблемы». К unix-way не имеет никакого отношения.

emulek
()

Сообщение удалено leave по причине 4.3 Провокация (-7)

Инициализация на баше - это просто и понятно.

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

это называется «решаеш проблему поставленную менеджером» - как решение дающее ожидаемую инфу( цель же задекларированна узнать как меняется некоторая внутряняя башевская переменная)- и в итоге получаем инстумент позволяющий отлаживать баш скрипты чуть легче ( можно пропатчить чтобы и трассу скидывал )

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

qulinxao ★★☆
()

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

Поэтому, глядя из разных процессов, можно наблюдать совершенно разные PATH. Вот ты о какой из них говорил?

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

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

есть ли «set -x» на этапе старта всей «системы»?

нет, но это просто поправить пересобрав bash.

И да, проблема в том, что $PATH может любая программа переправить, не только bash.

emulek
()
Ответ на: комментарий от qulinxao

в потоке смешаном с остальной диагностикой очень удобно для .

man grep.

Есть ещё префиксы. к примеру grep '^bash-debug: '

emulek
()
Ответ на: комментарий от Deleted

вот думаю что оно как-то ее меняет

strace еще не предлагали? Найдешь все файлы которые читает баш и грипни на предмет изменения переменной.

naszar
()
Ответ на: комментарий от Deleted

Ну тогда пропиши

export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin"
прямо в ~/.bashrc.

Если и это не сработает, то у тебя сломан bash.

mtk
()
Ответ на: комментарий от Deleted

Если проблема не воспроизводится в виртуальной консоле: обычно de/wm читают ~/.xsessionrc (или ~/.xinitrc) в нем пользователь пишет ~/.profile. Можно посмотреть что в этих файлах, если не поможет - тогда нужно посмотреть где инициализируется de/wm.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.