Где находится .bash_profile?

38

Я хочу добавить новые псевдонимы в мой файл .bash_profile , но я не могу найти этот файл.
Где он должен быть?

    
задан Shira 06.03.2011 в 12:40
источник

5 ответов

34

Это скрытый файл, расположенный в вашей домашней папке:

~/.bash_profile

( ~ расширяется до вашего домашнего каталога. Если ваше имя пользователя user , результатом будет: /home/user/.bash_profile ).

Так как это скрытый файл, вы должны сделать его видимым. Для этого в Nautilus перейдите в меню «Просмотр» и установите флажок «Показать скрытые файлы» (или нажмите сочетание клавиш Ctrl + H ).

Если вы используете Kubuntu с Dolphin, вам нужно нажать Ctrl + . , чтобы переключить видимость файлов.

    
ответ дан Lekensteyn 06.03.2011 в 12:45
источник
9

~/.bash_profile не подходит для размещения псевдонимов и функций. Они должны идти в ~/.bashrc . См. Ссылка для объяснения.

    
ответ дан geirha 06.03.2011 в 19:39
6

Удобно поместить весь ваш псевдоним в ~/.bash_aliases в домашний каталог пользователя. Это то, что предлагается в файле ~/.bashrc в комментариях.

    
ответ дан guest boeroe 29.12.2013 в 01:57
1

Обычно у вас нет .bash_profile на Ubuntu, и не должен обычно создавать этот файл. Как jpezz говорит , это будет в вашем домашнем каталоге вашей системы Ubuntu, что составляет ~ для, и вы можете создать его там. Но если вы это сделаете, вы должны быть осторожны, потому что это предотвратит bash от автоматического запуска команд в .profile , которые вы почти наверняка используете do .

Когда bash запускается как оболочка входа , в WSL или в противном случае 1 , он запускает первый из .bash_profile , .bash_login или .profile , который существует в вашем домашнем каталоге. Если у вас есть bash -специфические команды, которые вы хотите запустить при входе в систему, - но только тогда, когда bash - ваша оболочка, вы можете поместить их в .bash_profile . Но простое существование .bash_profile предотвратило бы использование .profile .

Итак, вы захотите источник .profile из .bash_profile , предположив, что вы хотели, чтобы эти команды тоже запускались, что вы почти всегда хотели. Вы можете сделать это, поставив эту команду в .bash_profile :

. ~/.profile

(Некоторые читатели могут привыкнуть к тому, что это написано как . "$HOME/.profile" , когда оно появляется в сценарии запуска. Это всегда хорошо - и вы можете использовать его для команд, которые должны работать с оболочками, отличными от bash также, если вам нужно разместить очень старые оболочки, которые не поддерживают стандартные функции , который ... ну, вам это не нужно. В любом случае bash всегда поддерживает расширение tilde и точка .bash_profile состоит в том, что только bash запускает команды из него, поэтому . ~/.profile в порядке.)

В состав . встроен файл, то есть он запускает все команды из файла в текущей оболочке. Откройте интерактивную оболочку bash и запустите help . для получения дополнительной информации.

Причина, по которой обычно у вас нет .bash_profile на Ubuntu, даже если у вас есть bash -специфические команды, которые вы хотите запустить при входе в систему , это то, что по умолчанию пользователи .profile файлов содержит код, который проверяет, является ли текущая оболочка bash , а затем вызывает запуск таких команд.

Есть еще один ответ на вопрос, где такие файлы, как .profile или .bash_profile . Стандартные версии этих файлов существуют в каталоге /etc/skel . Файлы в этом каталоге копируются в домашние каталоги Ubuntu, когда учетные записи пользователей создаются в системе Ubuntu, включая учетную запись пользователя, которую вы создаете как часть установки Ubuntu. Если вы посмотрите в этом каталоге, вы заметите, что есть файл с именем .profile - а также некоторые другие файлы, такие как .bashrc , но нет файла с именем .bash_profile . Вот почему - или, действительно, , как - нет .bash_profile в вашем домашнем каталоге Ubuntu, если вы его не создали самостоятельно.

Наконец, вы должны not помещать псевдонимы в .profile вообще, а также .bash_profile - хорошее место для них, как geirha правильно говорит . Это связано с тем, что вы хотите, чтобы ваши псевдонимы работали в интерактивных оболочках независимо от того, являются ли они командами входа в систему. Вместо этого определите свои псевдонимы в .bashrc или, лучше, .bash_aliases (в качестве гостевых boeroe указывает ), которые default .bashrc источников. См. Как создать постоянный псевдоним Bash?

Файл .profile по умолчанию проверяет, используете ли вы .bash shell и источник .bashrc , если вы:

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

Между тем, по умолчанию .bashrc перестанет работать, не делая ничего, если он запустится в неинтерактивной оболочке, поэтому команды в нем не будут выполняться, если он будет получен из .profile в non -interactive и в других более неясных сценариях 2 :

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

Итак, если вы размещаете псевдонимы в .bashrc или в .bash_aliases , вы получите их для интерактивных оболочек входа (где используется .profile ), а также интерактивных оболочек без входа (где используется .bashrc ). Это то, что вы хотите. Просто не ставьте ничего выше проверки интерактивности, если вы действительно не знаете, что вы делаете. знаете, что вы делаете.

1 Этот ответ был первоначально написан для вопрос, связанный с WSL , но этот вопрос был закрыт как дубликат, и этот ответ также полностью применяется здесь, поэтому я немного расширил и разместил его здесь вместо этого.

2 Когда bash обнаруживает, что он, вероятно, работает как исходная оболочка удаленного входа, которая not так как, когда вы используете ssh для запуска одной команды на удаленная машина - она ​​запускает команды из .bashrc . (См. 6.2 Файлы запуска Bash в руководство GNU Bash .)

    
ответ дан Eliah Kagan 27.10.2017 в 17:16
0

просто хотел перезвонить - чтобы даже файлы были скрыты в средстве просмотра, вы все равно можете открыть их все, только если вы просто введите имя файла. Например, если вы пишете адресную строку дельфина /home/<user>/.bashrc, он откроет файл с редактором по умолчанию, не переключая отображение / скрытие некоторых файлов.

Другой способ - просто открыть ваш любимый редактор и просто ввести имя файла.

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

И псевдонимы должны войти в .bashrc как писал geirha .

    
ответ дан Osis 08.03.2011 в 11:24