Я не могу найти .bash_profile в Ubuntu

67

Я не могу найти .bash_profileв Ubuntu 14.04 в моем /home/userкаталоге. Я использовал ls -aкоманду, чтобы увидеть .bash_profile, но такого файла нет.

Roledenez
источник
1
Вы должны использовать ~/.profileвместо этого.
Муру
2
возможный дубликат я не могу найти .bash_profile
Алаа Али
1
Довольно часто отсутствует какой-либо файл конфигурации (или даже каталоги). В этом случае программное обеспечение, которое должно их читать, будет использовать конфигурацию по умолчанию и / или читать другие источники для получения конфигурации. Если вы хотите изменить несуществующий файл конфигурации, просто сначала создайте его.
Бакуриу

Ответы:

84

Ubuntu использует ~/.profile.

Вы можете создать свой .bash_profileв Ubuntu, но тогда .profileне будет читаться.

Если мы читаем .profile содержание:

cat ~/.profile

выход

# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.

Так что используйте ~/.profileвместо~/.bash_profile

Nux
источник
.profile не работает для меня. Я должен был отредактировать .bashrc vim ~/.bashrcтогда. ~/.bashrc
Нахид
Использование .bash_profile не работает в Ubuntu. В качестве оболочки входа в систему с графическим интерфейсом используется Dash, а не Bash, поэтому bash_profile не читается.
Джонатан Хартли
Если вы редактируете свой .profile, вам необходимо выйти и снова войти, чтобы увидеть изменения.
Джонатан Хартли,
8

При вызове оболочки оболочки bash ищет свои конфигурационные файлы в следующем порядке:

[0] ~/.bash_profile
[1] ~/.bash_login
[2] ~/.profile

После нахождения первого, он перестает искать других, поэтому, если есть .bash_profileв моем $HOMEbash, не будет искать .bash_loginи .profileбольше.

Из этих трех имен файлов, Ubuntu по умолчанию использует, .profileвы можете переименовать его, .bash_profileесли хотите:

mv ~/.profile ~/.bash_profile

Теперь , если мы открываем новую Баш оболочку , используя bash -l, su - $USER, sudo -u $USER -iили любые другие команды , которая работает Баш как шелл, ~/.bash_profileполучат источники.

Важно отметить:

То, о чем я говорил до сих пор, относится только к самому Bash, когда вы входите в систему из графического интерфейса, менеджер дисплея отвечает за поиск правильных файлов.

Ubuntu использует в gdm3качестве диспетчера отображения, если мы посмотрим: /etc/gdm3/Xsessionмы видим, что ни один из файлов не будет получен, кроме .profile:

# First read /etc/profile and .profile
for file in /etc/profile "$HOME/.profile"; do
  if [ -f "$file" ]; then
    source_with_error_check "$file"
  fi
done

поэтому, если вы используете графический интерфейс для входа в систему, сохраните файл под .profileименем, иначе вы можете пропустить некоторые переменные и настройки в вашей среде.

Я думаю, что лучший вариант - создать символическую ссылку на .profile:

ln -s ~/.profile ~/.bash_profile

Теперь ваши данные живут .profile, gdmничего не пропускают, bash загружает, .bash_profileчто на самом деле .profile, и редактируя каждую из них, вы получаете тот же результат.

Отсутствует .profile?

Если у вас нет, .profileто возьмите его отсюда:

cp /etc/skel/.profile ~/.profile

или же

# Remember the note above
cp /etc/skel/.profile ~/.bash_profile
Ravexina
источник
Но если Bash сначала ищет ~ / .bash_profile, то почему он не делает этого в Ubuntu? Ubuntu модифицировал Bash? Это кажется странным. man bashв Ubuntu все еще описывает, как он будет искать .bash_profile в первую очередь.
Джонатан Хартли,
.bash_profile Сначала он ищет, что не может найти его (потому что он не существует), затем ищет, .bash_loginне может найти его снова (потому что Ubuntu не использует эти два имени), в конце концов, он ищет, .profileи да, это так. Так что, если вы создаете .bash_profilein, ~то вы перезаписываете Ubuntu ~/.profile, это стандартное поведение bash, здесь ничего не было изменено.
Равексина
Правильно, я тоже так думал сначала! И то, что вы описываете, происходит на RHEL. Но на Ubuntu это не так. Если я создаю .bash_profile, это не читается. Я только что понял, что это потому, что Ubuntu больше не использует Bash в качестве оболочки входа в систему с графическим интерфейсом. Вместо этого он использует «Dash». Я думаю, что это было правдой с 18.04.
Джонатан Хартли,
Вы упускаете суть здесь. На самом деле мы говорим о самом bash, что я говорю здесь о том, что Ubuntu создает «.profile», а не другие, поэтому, если мы откроем новую оболочку bash (login shell), это порядок чтения этих файлов, не так ли? Неважно, какой дистрибутив мы используем. :)
Равексина
Если читатели переименуют .profile в .bash_profile, как подсказывает ваш ответ, то для людей в Ubuntu этот файл не будет прочитан ни при входе в систему, ни при открытии терминала. Вы сломали их систему. Единственный способ чтения файла - это если они запускают сеансы bash с аргументом --login, чтобы явно сделать его оболочкой входа. Это никогда не произойдет автоматически на их рабочем столе.
Джонатан Хартли,
5

Это означает, что файл не существует. Но вы можете создать файл и bashвыполнить / использовать его, если bashон вызывается как оболочка для входа. Поэтому вы всегда входите в систему через оболочку (например, через ssh).

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

хаос
источник
Можете ли вы получить представление о том, почему отсутствует файл .bash_profile?
Roledenez
Вы можете скопировать его из /etc/skel/каталога.
Frantique
Это дизайнерское решение канонического. Но это не значит, что не могу этого сделать.
хаос
Я объяснил причину .bash_profileотсутствия (и не работает) Ubuntu в комментариях к другим ответам.
Джонатан Хартли,
2

Топ ответа использовать ~/.profileвместо того ~/.bash_profile, чтобы не работать для меня.

Модификация .bashrcсработала

Только что:

vim ~/.bashrc

Примечание: я использую Ubuntu WSL.

cryanbhu
источник
В подлинном Linux .profile применяется, когда вы входите в GUI, подключаетесь удаленно или входите в консоль, то есть после нажатия ctrl + shift + F2. Предполагается, что он представляет начальный момент входа в систему на компьютере, создавая оболочку, которая является родительской для всех других процессов, которые вы впоследствии создаете. Я подозреваю, что в WSL такого понятия нет, поэтому ваш .profile никогда не будет прочитан.
Джонатан Хартли
мне то же. ~/.profileпросто не загружается по умолчанию в Ubuntu 18.04
javapowered
0

Если вы имеете в виду .bashrc, вы найдете его в своей домашней папке. Если его там нет, вы можете скопировать его из папки / etc / skel в вашу домашнюю папку.

Если вам нужна дополнительная информация по этому вопросу, пожалуйста, посетите страницу stefaan lippens.

http://stefaanlippens.net/bashrc_and_others

ложь
источник