LINUX.ORG.RU

Потому что у рута могут быть свои файлы инициализации шелла.

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

Что-то я ничего не понимаю:

avalon coding # env-update
>>> Regenerating /etc/ld.so.cache...
avalon coding # . /etc/profile
avalon coding # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3:/usr/lib64/subversion/bin:/opt/vmware/bin:/opt/cuda/bin
Kindly_Cat ()
Ответ на: комментарий от Homura_Akemi

По этой команде нашёл вот что:

/etc/crontab:PATH=/sbin:/bin:/usr/sbin:/usr/bin

Может, оно?

Kindly_Cat ()

Я всё равно не понимаю, почему у рута изначально куцый PATH, который расширяется только после . /etc/profile. Что за нафиг такой?

Kindly_Cat ()

/etc/profile копируется тебе в ~/.bashrc при создании нового пользователя. Либо должно быть там указано.

Кури свои ~/.bashrc и ~/.bash_profile

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

давайте, не будем врать?

 When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the  file
       /etc/profile,  if  that  file exists.  After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and exe‐
       cutes commands from the first one that exists and is readable.  The --noprofile option may be used when the shell is started to inhibit this behavior.
qnikst ★★★★★ ()

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

% su -
Password: 
qnikst ~ # echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3:/opt/cuda/bin
qnikst@qnikst [git:master].zsh % su
Password: 
qnikst .zsh # echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
qnikst ★★★★★ ()
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от Kindly_Cat

Вот он — корень твоей проблемы. Это что ж за дистрибутив такой сраный?

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

Хм... Вот до чего доводят советы без подключения libastral.so

Я-то думал, ты su - пишешь всегда

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

Ну что, прогресс: четыре года я набирал su root, потом до меня дошло, что можно набирать просто su, а сейчас вот, спустя ещё три года, я узнал, что нужно набирать su -

:D

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

Ну, здрассти!

А где же ты будешь рутовские alias'ы и прочую шнягу прописывать?

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

Т.е. man su ты никогда не читал?

       -, -l, --login
              Starts the shell as login shell with an environment similar to a real login:

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

Когда нужно будет прописать - создам этот файл и пропишу.

Kindly_Cat ()

Пояснения: при переходе в режим суперпользователя командой su происходит просто вызов командного интерпретатора с правами root. При этом значения переменных окружения, в частности $PATH, остается таким же, как у пользователя. То есть в переменной $PATH не окажется каталогов /sbin, /usr/sbin, и без указания полного имени будут недоступны команды route, lilo, mkswap и другие. Более того, переменная $HOME будет указывать на каталог пользователя, и все программы, запущенные в режиме суперпользователя, сохранят свои настройки с правами рута в каталоге пользователя, что в дальнейшем может вызвать проблемы.

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

СТОП! Но эти каталоги-то есть (см. стартовый пост)! Нет дополнительных каталогов (/usr/local/bin и т.д.). Почему?

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

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

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

Это удобно для складирования самописных скриптов. Не совать же их к остальным программам.

Kindly_Cat ()
Ответ на: комментарий от Eddy_Em
~ % ls -l /usr/local/bin
lrwxrwxrwx 1 root root  16 авг.  25  2011 wgetpaste -> /usr/bin/lodgeit*
lrwxrwxrwx 1 root root  18 авг.  25  2011 xmessage -> /usr/bin/gxmessage*

есть идеи как сделать лучше?

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

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

Зачем? Просто закинь это в /etc/profile или куда-нибудь в /etc/profile.d/

Все равно юзерам придется делать PATH=PATH:~/bin

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

Просто закинь это в /etc/profile или куда-нибудь в /etc/profile.d/

А это типа не то же самое, что и добавить в PATH?

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

Тогда не придется каждому юзеру самостоятельно это делать.

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

wgetpaste - просто полезность, можно было и алиасом поправить, а вот xmessage -> gxmessage, потому, что xmessage тормознутое говно, а у многих программ его вызов зашит, в итоге у меня вызывается полностью совместимый адекватный аналог. при этом system wide.

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

Я и не говорил про «самостоятельно».

И каждый юзер будет лазить в хомяк рута? Так у него прав не хватит. Или ты предлагаешь каждому юзеру создать каталог ~/bin и скопировать туда скрипты? Ну и зачем нужно такое дублирование?

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

И что, не вариант в общесистемные алиасы это запихать?

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

И каждый юзер будет лазить в хомяк рута?

Да ты не понял: я имею в виду, что у каждого юзера есть 100500 своих самописных скриптов и программулинок, которые он складывает себе в ~/bin. И ему приходится в ~/.bashrc прописывать добавление ~/bin к PATH. А ежели ты сделаешь это глобально, юзеру меньше головной боли.

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

Не надо ФС всяким говном засирать. И директории, которые 100 лет не сдались (/var/local) можно удалить на хрен.

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

я имею в виду, что у каждого юзера есть 100500 своих самописных скриптов и программулинок, которые он складывает себе в ~/bin

А если одному юзеру захочется воспользоваться скриптом другого пользователя? Будешь чехардить с правами доступа, лол?

Для этих целей есть совершенно удобный и пустой каталог /usr/local/bin. И ничего велосипедить не нужно.

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

А если одному юзеру захочется воспользоваться скриптом другого пользователя?

Если тот запретил доступ к хомяку — никак. И это правильно.

Для этих целей есть совершенно удобный и пустой каталог /usr/local/bin

И ты разрешаешь всем подряд туда писать? Вот же делать не хрен!

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