Я не могу найти .bash_profileв Ubuntu 14.04 в моем /home/userкаталоге. Я использовал ls -aкоманду, чтобы увидеть .bash_profile, но такого файла нет.
Я не могу найти .bash_profileв Ubuntu 14.04 в моем /home/userкаталоге. Я использовал ls -aкоманду, чтобы увидеть .bash_profile, но такого файла нет.
Ответы:
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
vim ~/.bashrcтогда. ~/.bashrc
При вызове оболочки оболочки 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то возьмите его отсюда:
cp /etc/skel/.profile ~/.profile
или же
# Remember the note above
cp /etc/skel/.profile ~/.bash_profile
man bashв Ubuntu все еще описывает, как он будет искать .bash_profile в первую очередь.
.bash_profile Сначала он ищет, что не может найти его (потому что он не существует), затем ищет, .bash_loginне может найти его снова (потому что Ubuntu не использует эти два имени), в конце концов, он ищет, .profileи да, это так. Так что, если вы создаете .bash_profilein, ~то вы перезаписываете Ubuntu ~/.profile, это стандартное поведение bash, здесь ничего не было изменено.
.bash_profile, это не читается. Я только что понял, что это потому, что Ubuntu больше не использует Bash в качестве оболочки входа в систему с графическим интерфейсом. Вместо этого он использует «Dash». Я думаю, что это было правдой с 18.04.
Это означает, что файл не существует. Но вы можете создать файл и bashвыполнить / использовать его, если bashон вызывается как оболочка для входа. Поэтому вы всегда входите в систему через оболочку (например, через ssh).
Если вы хотите, чтобы контент выполнялся каждый раз, когда вы открываете терминал, вам следует .bashrcвместо этого изменить файл.
/etc/skel/каталога.
.bash_profileотсутствия (и не работает) Ubuntu в комментариях к другим ответам.
Топ ответа использовать ~/.profileвместо того ~/.bash_profile, чтобы не работать для меня.
Модификация .bashrcсработала
Только что:
vim ~/.bashrc
Примечание: я использую Ubuntu WSL.
~/.profileпросто не загружается по умолчанию в Ubuntu 18.04
Если вы имеете в виду .bashrc, вы найдете его в своей домашней папке. Если его там нет, вы можете скопировать его из папки / etc / skel в вашу домашнюю папку.
Если вам нужна дополнительная информация по этому вопросу, пожалуйста, посетите страницу stefaan lippens.
~/.profileвместо этого.