~/.profile
выполняется при входе в систему в режиме консоли, а не в графическом режиме. Вы можете использовать ключи F1, F2 ...
для входа в режиме консоли.
Почему PATH определяется в ~ / .profile, даже если запуск терминала с помощью bash выполняется только ~ / .bashrc?
У меня есть guest
учетная запись пользователя в моей системе Debian с рабочим столом XFCE.
Он имеет ~/.profile
файл, добавленный по умолчанию. Последние несколько строк этого файла:
# set PATH so it includes user's private bin if it exists if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fi echo .profile executed
Последняя echo
команда добавлена мной. Я гарантировал, что $HOME/bin
существует.
guest@debian:~$ ls -ld $HOME/bin drwxr-xr-x 2 guest guest 4096 Jan 9 09:42 /home/guest/bin
После загрузки моей системы Debian я захожу на рабочий стол XFCE, используя guest
учетную запись, и запускаю терминал (xfce4-терминал). Но я не вижу никаких доказательств того, что ~/.profile
был казнен.
guest@debian:~$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
man bash
довольно ясно дает понять, что ~/.profile
читается и выполняется в интерактивной оболочке входа или неинтерактивной оболочке с --login
опцией. ~/.bashrc
выполняется в интерактивной оболочке без входа в систему, поэтому все в порядке, когда xfce4-терминал запускает bash, ~/.profile
не выполняется.
Если ~/.profile
при запуске нового Терминала не выполняется, почему PATH
обновляется в ~/.profile
?
Разве Debian не должен предоставлять PATH
обновление, ~/.bashrc
чтобы оно было доступно пользователю, когда пользователь запускает терминал?
4 ответа на вопрос
- Популярные
- Новые
- С комментариями
- Активные
Edit -> Profile Preferences -> Title and Command -> "Run command as a login shell"
Обычные ~/.profile
загрузки, ~/.bashrc
если они доступны, если - при условии $BASH_VERSION
, присутствует в вашей среде.
Имейте в виду, что ~/.profile
это игнорируется, если, если есть ~/.bash_profile
или ~/.bash_login
в вашем доме, и что, в результате его игнорирования, также ~/.bashrc
не получены.
Этот ответ был получен здесь при исследовании аналогичной проблемы. И в этом ответе Unix & Linux упоминается, как Debian обрабатывает конфигурации оболочки со ссылками, которые могут помочь.
От man bash
:
Когда bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром -login, она сначала читает и выполняет команды из файла / etc / profile, если этот файл существует. После прочтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile в указанном порядке, а также читает и выполняет команды из первой существующей и доступной для чтения ....
Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, bash читает и выполняет команды из ~ / .bashrc, если этот файл существует ....
Я это понимаю
~/.bashrc
: для интерактивной оболочки~/.bash_profile
,~/.bash_login
,~/.profile
: Для входа в оболочку
Итак, если вам нужно изменить PATH
в терминале, который представляет собой интерактивную оболочку, вы можете добавить эти PATH
настройки ~/.bashrc
; или, в качестве альтернативы, вы можете источник ~/.profile
от ~/.bashrc
всякий раз, когда вы находитесь в нерегистрированной оболочки, например:
shopt -q login_shell || . ~/.profile
А почему PATH
устанавливается в ~/.profile
качестве рекомендуемого образом, я считаю, что пользователь, определенный PATH
должен быть установлен правильно, когда он / она логины, и «войти в систему » может быть bash
, zsh
или GUI, или несколько иначе.
Senario 1: Некоторым пользователям может потребоваться не-X в качестве рабочей среды по умолчанию; и X вызывается в startx
обычном или автоматическом режиме с ~/.profile
момента входа в виртуальный терминал tty7
.
[ -z $DISPLAY -a $XDG_VTNR -eq 7 ] && exec startx
В этом случае пользователи тщательно выбирали то, что установить в ~/.profile
, ~/.bashrc
и~/.xinitrc
, таким образом, что они имеют требуемый набор переменных окружения --- PATH
, EDITOR
, VISUAL
, BROWSER
и т.д. .--- ли он / она работает в:
- Консоли (Ctrl + Alt + F [1-6]) или вход без X через
ssh
:~/.profile
+~/.bashrc
- Нетерминальные программы в X:
~/.profile
+~/.xinitrc
- Эмуляторы терминала в X:
~/.profile
+~/.xinitrc
+~/.bashrc
Таким образом, установка PATH
в ~/.profile
это лучший выбор. Пользователи могут установить EDITOR
как vim
в~/.profile
(в не-X), но изменить его на emacs
в ~/.xinitrc
(в X).
Senario 2: пользователь с графическим интерфейсом, который XFCE
вместо этого входит в систему как bash
; так PATH
можно установить в~/.xsessionrc
как описано здесь .
Senario 3:zsh
пользователь может установить PATH
в ~/.zprofile
. Интерактивные настройки для bash
находятся в местах ~/.bashrc
, и интерактивные настройки для zsh
находятся в ~/.zshrc
.
Мое понимание всегда было .bashrc
специфичным для bash и .profile
является кросс-оболочкой. Это не может быть проблемой для большинства домашних пользователей, но я иногда нахожусь в системе, где пользователи предпочитают ksh
(и применяют этот выбор для новых пользователей). Если по какой-то причине вы получаете борщ, .profile
также используется. Обратите внимание, что zsh и csh не используют .profile.
Похожие вопросы
-
2
.profile в Mac OS X?
-
1
Приостановить все, кроме x задач, интенсивно использующих процессор
-
10
Как я могу найти в истории bash и повторно запустить команду?
-
-
2
Можно ли передать выходные данные одной команды двум другим командам?
-
8
Переименуйте группу файлов одной командой
-
2
Почему мой путь не обновляется * сейчас *?
-
5
Как удалить символическую ссылку на каталог?
-
8
Спаси меня от бессмысленного терминала
-
9
Как можно добавить номер строки и табуляцию к каждой строке текстового файла?
-
1
Когда я должен положить конфигурации в .bashrc против. .bash_profile?