LINUX.ORG.RU

su - -c и /etc/profile

 , ,


0

1

Доброе утро.

После одного из апдейтов сломался мой rc-скрипт и я полез смотреть, в чем же там дело.

И увидел примерно следующее:

root@zhuravlik /home/anton # su - -c env --shell /bin/sh tmpuser
SHELL=/bin/sh
TERM=xterm
USER=tmpuser
PATH=/bin:/usr/bin
PWD=/usr/share/tmpuser
SHLVL=1
HOME=/usr/share/tmpuser
LOGNAME=tmpuser
_=/usr/bin/env

root@zhuravlik /home/anton # su - -c env --shell /bin/zsh tmpuser
TERM=xterm
HOME=/usr/share/tmpuser
SHELL=/bin/zsh
USER=tmpuser
LOGNAME=tmpuser
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/fantom/bin:/opt/java/bin:/opt/java/db/bin:/opt/java/jre/bin:/opt/opennebula/bin:/usr/bin/core_perl
SHLVL=0
PWD=/usr/share/tmpuser
OLDPWD=/usr/share/tmpuser
ANT_HOME=/usr/share/apache-ant
FAN_HOME=/opt/fantom
G_BROKEN_FILENAMES=1
J2SDKDIR=/opt/java
JAVA_HOME=/opt/java
DERBY_HOME=/opt/java/db
J2REDIR=/opt/java/jre
LANG=C
MAVEN_OPTS=-Xmx512m
HG=/usr/bin/hg
MOZ_PLUGIN_PATH=/usr/lib/mozilla/plugins
ONE_LOCATION=/opt/opennebula
XDG_DATA_HOME=/usr/share/tmpuser/.local/share
XDG_CONFIG_HOME=/usr/share/tmpuser/.config
XDG_CACHE_HOME=/usr/share/tmpuser/.cache
XDG_DATA_DIRS=/usr/local/share/:/usr/share/
XDG_CONFIG_DIRS=/etc/xdg
_=/usr/bin/env

То есть баш почему-то не запускает /etc/profile при старте через su - с -c. Если я просто залогинюсь под tmpuser и посмотрю там env, то все в порядке.

Уважаемые знатоки, расскажите, пожалуйста, в чем может быть дело и как лечить? Может ли быть дело в том, что bash криво настроен, или в самом баше что-то поменялось?

Спасибо!

Может, чудак мейнтейнер вкрутил в /etc/profile проверку на интерактивность? Если нет, то это похоже на баг.

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

Не, в /etc/profile проверки на интерактивность нет. Похоже на баг.

Но все же: у кого сейчас bash 4.2, можете сюда включить свой

bash --version
и выхлоп
su - -c env --shell /bin/sh tmpuser?

Кому не лень, конечно. tmpuser должен существовать, но не быть залогиненным.

zhuravlik ★★★★ ()
Ответ на: комментарий от zhuravlik
$ su - -c env --shell /bin/sh test
Пароль: 
SHELL=/bin/sh
TERM=xterm
USER=test
PATH=/bin:/usr/bin
PWD=/home/test
SHLVL=1
HOME=/home/test
LOGNAME=test
_=/usr/bin/env
$ bash --version | head -n1
GNU bash, version 4.2.37(2)-release (i686-pc-linux-gnu)
dhampire ★★★ ()
Ответ на: комментарий от zhuravlik
$ su - -c env --shell /bin/sh test
Пароль: 
MANPATH=/usr/local/share/man:/usr/share/man:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.3/man:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.22.90/man:/usr/lib64/php5.4/man/
SHELL=/bin/sh
TERM=xterm
USER=test
PRELINK_PATH_MASK=/usr/lib64/klibc
PAGER=/usr/bin/less
CONFIG_PROTECT_MASK=/etc/gentoo-release /etc/sandbox.d /etc/php/cli-php5.4/ext-active/ /etc/php/cgi-php5.4/ext-active/ /etc/php/apache2-php5.4/ext-active/ /etc/fonts/fonts.conf /etc/terminfo /etc/ca-certificates.conf /etc/revdep-rebuild /etc/splash
PATH=/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.3
PWD=/home/test
EDITOR=/usr/bin/vi
LANG=ru_RU.koi8r
SHLVL=1
HOME=/home/test
PYTHONPATH=/usr/lib/portage/pym
LESS=-R -M --shift 5
LOGNAME=test
GCC_SPECS=
LESSOPEN=|lesspipe %s
INFOPATH=/usr/share/info:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.3/info:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.22.90/info
RUBYOPT=-rauto_gem
CONFIG_PROTECT=/usr/share/gnupg/qualified.txt
_=/usr/bin/env
$ bash --version
GNU bash, version 4.2.37(1)-release (x86_64-pc-linux-gnu)
Lavos ★★★★★ ()
Ответ на: комментарий от Homura_Akemi

Спасибо. Значит, либо что-то случилось между .36 и .37 (что вряд ли, там изменения касаются только vi-mode), либо в арче сломали.

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

Спасибо большое!

Завожу баг в багтрекер арча. Видимо, что-то криво настроено. По этому выхлопу кажется, что /etc/profile прочитан.

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

И вам тоже спасибо. Написал, что не у меня одного.

Закрываю тему.

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