Где .bash_profile? [дубликат]

На этот вопрос уже есть ответ:

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

48
задан 29 December 2013 в 05:43

5 ответов

~/.bash_profile это не то место, где можно ставить псевдонимы и функции. Они должны идти в ~/.bashrc. См. http://mywiki.wooledge.org/DotFiles для объяснения.

0
ответ дан 29 December 2013 в 05:43

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

0
ответ дан 29 December 2013 в 05:43

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

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

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

И псевдонимы должны входить в .bashrc, как писал гейра .

0
ответ дан 29 December 2013 в 05:43

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

~/.bash_profile

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

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

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

0
ответ дан 29 December 2013 в 05:43

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

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

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

. ~/.profile

(Некоторые читатели могут быть приучены к наблюдению этого записанного как . "$HOME/.profile" когда это появляется в сценарии запуска. Это всегда прекрасно - и можно предпочесть использовать это для команд, которые должны работать над оболочками кроме bash также, если необходимо разместить чрезвычайно старые оболочки, которые не поддерживают стандартные функции, которые - хорошо, Вам не нужно это. В любом случае, bash всегда расширение тильды поддержек и точка .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, если Вы не создали его сами.


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

Значение по умолчанию .profile файл проверит, выполняете ли Вы a bash оболочка и источник .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 в неинтерактивной оболочке входа в систему и в другом более неясном scenarios2:

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

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


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

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

4
ответ дан 29 December 2013 в 05:43

Другие вопросы по тегам:

Похожие вопросы: