Я не можу знайти .bash_profile в ubuntu


67

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


1
Ви повинні використовувати ~/.profileзамість цього.
муру

2
можливий дублікат не можу знайти .bash_profile
Alaa Ali

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


.profile не працював для мене. Мені довелося vim ~/.bashrcтоді редагувати .bashrc . ~/.bashrc
Nahid

Використання .bash_profile не працює на Ubuntu. Він використовує Dash як оболонку входу в GUI, а не Bash, тому bash_profile не читається.
Джонатан Хартлі

Якщо ви редагуєте .profile, вам потрібно вийти із системи та знову ввійти, щоб побачити зміни.
Джонатан Хартлі

8

При виклику оболонки для входу bash шукає конфігураційні файли в такому порядку:

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

Знайшовши перший, він перестає шукати інших, тому, якщо є .bash_profileв моєму $HOMEбашті, не шукатиму .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_profileнасправді завантажують .profile, і редагуючи кожну з них, ви отримуєте однаковий результат.

Відсутній .profile?

Якщо у вас немає, .profileто захопіть його копію звідси:

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

або

# Remember the note above
cp /etc/skel/.profile ~/.bash_profile

Але якщо Bash спочатку шукає ~ / .bash_profile, то чому так це не робити в Ubuntu? Чи Ubuntu змінив Bash? Це здається дивним. man bashна Ubuntu все ще описується, як він спочатку буде шукати .bash_profile.
Джонатан Хартлі

Він шукає .bash_profile перше він не може знайти його (бо він не існує) , то шукає .bash_loginне може знайти його знову (бо Ubuntu не використовує ці два імені) , нарешті він шукає .profileі так там. Отже, якщо ви створюєте .bash_profileв, ~то ви перезаписуєте ubuntu ~/.profile, це поведінка bash за замовчуванням тут нічого не змінено.
Ravexina

Правильно, це я теж спочатку думав! І те, що ви описуєте, НЕ відбувається на RHEL. Але на Ubuntu це не так. Якщо я створюю .bash_profile, він не читається. Я щойно зрозумів, що це тому, що Ubuntu більше не використовує 'Bash' як оболонку входу в GUI. Натомість він використовує "Dash". Я думаю, що це правда приблизно з 18.04.
Джонатан Хартлі

Тут вам не вистачає точки. Насправді ми говоримо про сам bash, що я тут говорю, це те, що Ubuntu створює ".profile", а не інші, тож якщо ми відкриємо нову оболонку bash (оболонку входу), це порядок читання цих файлів, чи не так " t незалежно від того, який дистрибутив ми використовуємо. :)
Ravexina

Якщо читачі перейменують .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.


У справжньому Linux. Він повинен представляти початковий час, коли ви входите в машину, створюючи оболонку, яка є батьківською для всіх інших процесів, які ви згодом створюєте. Я підозрюю, що в WSL немає нічого такого, тому ваш .profile ніколи не може бути прочитаний.
Джонатан Хартлі

те саме для мене. ~/.profileпросто не завантажується за замовчуванням у ubuntu 18.04
javapowered

0

Якщо ви маєте на увазі .bashrc, ви знайдете його у своїй домашній папці. Якщо його немає, ви можете скопіювати його з папки / etc / skel у свою домашню папку.

Якщо вам потрібна додаткова інформація з цього приводу, завітайте на сторінку стефана з ліпами.

http://stefaanlippens.net/bashrc_and_others

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.