Как создать ~ / .bash_profile и ~ / .profile

25

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

Ти Г.
источник

Ответы:

28

Вы можете использовать touchкоманду.

Например,

cd ~

перейти в домашний каталог.

Теперь мы создадим файл с именем .bash_profile(точка означает, что он будет скрыт).

Тогда используйте nanoили viв Терминале. Если вы не знаете, что viесть, просто используйте nano. Чтобы открыть эти файлы, вы должны использовать:

sudo nano .bash_profile

sudoгарантирует, что вы сможете сохранить эти файлы. Здесь вы можете добавить aliases. nanoили viавтоматически создаст новый файл, если он не существует в вашем текущем каталоге в Терминале.

После того, как вы закончите, нажмите Ctrl+ O, Enterи Ctrl+ , Xчтобы сохранить и выйти. Наконец, используйте

source ~/.bash_profile

перезагрузить Терминал, и он прочитает, что вы положили в эти файлы.

Конечно, вы также можете использовать псевдоним, если хотите. :)

Чтобы ответить на ваш последний вопрос, эти файлы будут автоматически читаться каждый раз, когда вы открываете Терминал. Однако, если есть ошибка (например, не ставьте пробелы между псевдонимами), она сообщит вам.

Больше информации

Как указал Джордж, .bash_profileбудет работать только при входе в систему. Для оболочек без входа в систему вам потребуется создать .bashrcфайл с:

    sudo nano .bashrc

связи

.bash_profile vs .bashrc

Важность .bashrc

sameetandpotatoes
источник
5
Почему вы используете touchдля создания пустых файлов в первую очередь? nanoв любом случае делает это автоматически.
nohillside
5
Кроме того, вам, вероятно, не нужны и ~ / .profile, и ~ / .bash_profile - если bash видит .bash_profile, он не беспокоится о .profile. Наконец, он будет запущен только для оболочек "login"; вместо нелогиновых оболочек запускается ~ / .bashrc. Смотрите предыдущие вопросы SO здесь и здесь .
Гордон Дэвиссон
@GordonDavisson это хорошо иметь ~/.profileв качестве копии ~/.bash_profile? И если у вас есть оба, что у вас внутри, ~/.profileчто нельзя сделать ~/.bash_profile?
Thi G.
2
@ThiG: я бы не стал одним копировать другой; вы, вероятно, добавите что-то к одному, забудете добавить это к другому и запутаетесь. Посмотрите мои рекомендации по этому такому вопросу о том, что я считаю лучшей практикой.
Гордон Дэвиссон
sudoубедитесь, что вы испортили права пользователя. Не делай этого.
Макс Райд
2

Вы можете скопировать эти файлы из / etc / skel /, которые являются скелетными файлами для новых пользователей, созданных командой вроде useradd в дистрибутивах на основе Debian:

cp -nr /etc/skel/. ~/

Эти файлы будут автоматически загружаться оболочкой при каждом входе в систему. Способ загрузки этих файлов профиля описан на странице руководства вашей оболочки. Если вы используете специальную оболочку bash (например, через ssh, ansible и т. Д.), Вы должны использовать команду «bash -ilc», которую вы хотите выполнить в ENV, подготовленной этими файлами профиля ». -i означает интерактивную оболочку, что часто требуется для входа в систему .bashrc -l, что приводит к загрузке .profile (или .bash_profile существует - см. справочную страницу bash), который затем загружает .bashrc

Юрай Михалак
источник
0

Я предпочитаю использовать текстовые редакторы с графическим интерфейсом, такие как BBEdit или TextWrangler. Эти текстовые редакторы могут обрабатывать невидимые файлы, такие как .profile и .bash_profile, и они имеют преимущество, заключающееся в наличии интерфейса с графическим интерфейсом, в отличие от nano, который является интерфейсом консоли.

TextWrangler

BBEdit

Kaydell
источник
0

Вы также можете использовать текстовый редактор с графическим интерфейсом, например TextEdit:

touch ~/.bash_profile
open -e ~/.bash_profile

open -eэто ярлык для open -a TextEdit.

Вам не обязательно создавать .profile или .bashrc. Терминал и iTerm 2 открывают новые оболочки в качестве оболочек для входа, поэтому bash не читает .bashrc. Если существуют оба файла .bash_profile и .profile, bash читает только .bash_profile, когда он вызывается в качестве интерактивной оболочки входа. .profile читается ksh, когда он вызывается как интерактивная оболочка входа, и bash, когда он вызывается как sh, как интерактивная оболочка входа.

Я фактически сказал iTerm 2 открывать новые оболочки как оболочки без входа в систему, и мой .bash_profile просто содержит строку вроде . ~/.bashrc. tmux и режим оболочки в emacs по умолчанию открывают новые оболочки как не входящие в систему. .bash_profile все еще читается, когда я ssh на мой компьютер.

LRI
источник
Дай посмотреть, понял ли я ... У тебя есть и то, ~/.bash_profileи другое ~/.profile? А у тебя тоже есть ~/.bashrc?
Thi G.
У меня нет .profile, а мой .bash_profile просто содержит . ~/.bashrc.
Lri