Похожие вопросы

Выполнить git pre-commit Хук только если файлы в определенном каталоге изменены
Как остановить в Git-Bash, то ждать окончания?
Я добавил новый путь в список путей, но не смог выполнить программу из любого места linux
gnome-terminal: как сохранить символические ссылки рабочего каталога при открытии новой вкладки?
iTerm2 не уважаешь мои клавиши...иногда
Как запустить команду в новом gnome-терминале?
Сортировка музыкальной библиотеки по BPM
Использование systemd для выполнения интерактивного сценария (whiptail) после многопользовательского.цель, но до экрана входа в систему
Какова область "экспортируемых" переменных оболочки Unix?
Как пакетно переименовать файлы со случайным именем
Mac терминала показывая Баш вместо моего логина
Как chmod все папки рекурсивно исключая все папки в определенной папке?
Bash-скрипт не выполняется при вводе команды в переменную
Не удается установить subversion поверх yum
Удалить OSX spotlight сочетание клавиш из командной строки

Настройка $PATH в /etc / profile не влияет на root

я добавил в каталог PATH in /etc/profile. Это работает для моей учетной записи пользователя, но не для root. Его легко добавить в мой /root/.bashrc но я хотел бы понять, что случилось. Это в основном немодифицированный Debian 6, поэтому я думаю, что мои изменения должны сделать трюк.

вот мой /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/lib/distcc/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/lib/distcc/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

if [ "$PS1" ]; then
  if [ "$BASH" ]; 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

# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.

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

редактировать: я добавил Это distcc-stuff. Вот какой echo $PATH говорит:

$ echo $PATH
/usr/lib/distcc/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
5
задан phs
источник

3 ответов

вам нужно запустить оболочку входа (или запустить неинтерактивную оболочку, но это не то, что вы хотите), чтобы загрузить /etc/profile.

использовать

su - username

или в случае root

su -

для этого.

- то же самое, что -l или --login и делает оболочку оболочкой входа.

6
отвечен Daniel Beck 2011-05-26 03:40:09
источник

необходима оболочка входа в систему, которую можно создать с помощью sudo:

sudo bash --login <command>
0
отвечен Hazok 2014-09-11 23:56:22
источник

вам нужно имитировать оболочку входа, которую вы можете сделать с помощью sudo -i:

sudo -i <command>

С man sudo:

 -i [command]
             The -i (simulate initial login) option runs the shell specified by the password
             database entry of the target user as a login shell.  This means that login-spe‐
             cific resource files such as .profile or .login will be read by the shell.  If a
             command is specified, it is passed to the shell for execution via the shell's -c
             option.  If no command is specified, an interactive shell is executed.  sudo
             attempts to change to that user's home directory before running the shell.  The
             security policy shall initialize the environment to a minimal set of variables,
             similar to what is present when a user logs in.  The Command Environment section
             in the sudoers(5) manual documents how the -i option affects the environment in
             which a command is run when the sudoers policy is in use.
0
отвечен phs 2018-09-10 19:38:32
источник

Другие вопросы bash linux path root