Где находится файл bash profile
I feel stupid asking, but I can't seem to find the answer to this anywhere. I'm trying to follow these instructions to edit my bash prompt, but there is no .bashrc in either my user directory ( ~/.bashrc ), or in my home directory, or in the main file system directory.
There is no .bashrc in /etc/ (there is a bash.bashrc , however).
Do I create a .bashrc file in my user or home directory? Is there a better, more recent set of instructions for modifying the bash prompt?
You do not need to find/edit .bashrc in /etc/ . There should be a .bashrc file in your home directory. Try to open/edit ~/.bashrc . But before that I should also ask if you are new to Linux. If you are new to Linux, then I can post detailed instructions here.
All of the above answers recommend putting your aliases in .bashrc , but you should put them in .bash_profile Edit To clarify, don't create a .bashrc if it's just for this, create or modify ~/.bash_profile
@Louis Defining aliases in .bash_profile is wrong. In Ubuntu .profile (which runs for login shells) sources .bashrc when it's an interactive bash shell. So putting aliases in .bashrc (or .bash_aliases , sourced in .bashrc ) defines them in all interactive bash shells. Aliases in .bash_profile yields this problem, and others. See this, that, this post, and the default ~/.bashrc 's comments recommending putting aliases there or in .bash_aliases .
Oh wow, I'm very sorry if I've misled anyone. I wrote that comment just a few months into using Linux. Peculiarly I do now have them in .bashrc and sourced my .bashrc in .bash_profile with code copied from this SuperUser answer ("Get the aliases and functions"). Thanks for correcting these commonly viewed questions Eliah, really nice answer here!
10 Answers 10
Don't forget it is a hidden file inside your home directory (you would not be the first to do a ls -l and thinking it is not there).
There should be a .bashrc on the first page. If not just create it with:
and add in the lines you need to add into it.
( chmod 644 .bashrc to make it rw r r ).
That was exactly it -- hidden file, and I didn't think to look beyond the obvious. Thanks -- maybe this will help other shmucks like me as well. :)
User specific, hidden by default.
If not there simply create one.
System wide:
There is a .bashrc in every user's home folder (99.99% of the time) as well as one system-wide (which I don't know the location of in Ubuntu).
The quickest way to access it is nano ~/.bashrc from a terminal (replace nano with whatever you like to use).
If this is not present in a user's home folder the system-wide .bashrc is used as a fallback as it is loaded before the user's file. You could simply copy and paste it (with root permissions of course), but a .bashrc is not entirely essential (it may be required to make things work. I haven't found out) at a user level as it mostly overrides the system-wide one with user-specific tweaks. You could write your own though.
The main components for that users may tweak are PS1 (the Bash prompt defaults to display user@localhost:pwd $ ) and aliases as well as setting a color prompt and maybe PS2 (busy state message).
Я хочу добавить новые псевдонимы в мой файл .bash_profile , но я не могу найти этот файл.
Где он должен быть?
Это скрытый файл, расположенный в вашей домашней папке:
( ~ расширяется в ваш домашний каталог. Если ваше имя пользователя user , результатом будет: /home/user/.bash_profile ).
Так как это скрытый файл, вы должны сделать его видимым. Для этого в Nautilus перейдите в меню «Просмотр» и установите флажок «Показать скрытые файлы» (или нажмите сочетание клавиш Ctrl + H ).
Если вы используете Kubuntu с Dolphin, вам нужно нажать Ctrl + . , чтобы переключить видимость файлов.
Удобно поместить весь ваш псевдоним в ~/.bash_aliases в домашний каталог пользователя. Это то, что предлагается в файле ~/.bashrc в комментариях.
Обычно у вас нет .bash_profile на Ubuntu, а также , как правило, создайте этот файл. Как jpezz говорит , он будет в вашем домашнем каталоге вашей системы Ubuntu, что означает ~ , и вы можете его создать там. Но если вы это сделаете, вы должны быть осторожны, потому что это предотвратит bash от автоматического запуска команд в .profile - что вы почти наверняка делаем .
Когда bash работает как оболочка входа , в WSL или в противном случае 1 , он запускает первый из .bash_profile , .bash_login или .profile , который существует в вашем домашнем каталоге. Если у вас есть bash -специфические команды, которые вы хотите запускать при входе в систему, но только тогда, когда bash - ваша оболочка - вы можете поместить их в .bash_profile . Но простое существование .bash_profile предотвратит .profile от использования.
Итак, вам нужно source .profile из .bash_profile , если вы хотите, чтобы эти команды были тоже, что вы почти всегда будете делать. Вы можете сделать это, поставив эту команду в .bash_profile :
Встроенный . источник запускает файл, то есть он запускает все команды из файла в текущей оболочке. Откройте интерактивную оболочку bash и запустите help . для получения дополнительной информации.
Причина, по которой у вас обычно нет .bash_profile на Ubuntu, даже если у вас есть bash -специфические команды, которые вы хотите запустить при входе в систему , это то, что по умолчанию пользовательский .profile содержат код, который проверяет, является ли текущая оболочка bash , а затем запускает такие команды.
Существует еще один ответ на вопрос, где такие файлы, как .profile или .bash_profile . Стандартные версии этих файлов существуют в каталоге /etc/skel . Файлы в этом каталоге копируются в домашние каталоги Ubuntu, когда учетные записи пользователей создаются в системе Ubuntu, включая учетную запись пользователя, которую вы создаете как часть установки Ubuntu. Если вы посмотрите в этом каталоге, вы заметите, что есть файл с именем .profile - а также некоторые другие файлы, например .bashrc - но нет файла с именем .bash_profile , Вот почему - или, действительно, , как - no .bash_profile существует в вашем доме Ubuntuесли вы сами не создали его.
Наконец, вы должны not помещать псевдонимы в .profile вообще, равно как и .bash_profile хорошее место для них, как geirha справедливо говорит . Это связано с тем, что вы хотите, чтобы ваши псевдонимы работали в интерактивных оболочках независимо от того, являются ли они командами входа в систему. Вместо этого определите свои псевдонимы в .bashrc или, лучше, .bash_aliases (в качестве указывается гостевой boeroe ), который по умолчанию используется .bashrc . См. Как создать постоянный псевдоним Bash?
Файл .profile по умолчанию будет проверять, если вы используете .bash shell и source .bashrc , если вы:
Между тем, по умолчанию .bashrc будет закрываться сверху, ничего не делая, если он запускается в неинтерактивной оболочке, поэтому команды в он не будет работать, если он будет получен с помощью .profile в неинтерактивной оболочке входа в систему и в других более неясные сценарии 2 :
Итак, если вы ставите псевдонимы в .bashrc или в .bash_aliases , вы получите их для интерактивных оболочек входа (где используется .profile ), так как а также интерактивные оболочки без входа (где используется .bashrc ). Это то, что вы хотите. Просто не ставьте ничего выше проверки интерактивности, если вы действительно не знаете, что вы делаете. знаете, что вы делаете.
1 Этот ответ был первоначально написан для вопрос, связанный с WSL , но этот вопрос был закрыт как дубликат, и этот ответ также полностью применяется здесь, поэтому я немного расширил и разместил его здесь вместо этого.
2 Когда bash обнаруживает, что он, вероятно, работает как начальный оболочка удаленного входа, которая представляет собой not оболочку входа - например, когда вы используете ssh для запуска одной команды на удаленном компьютере - она запускается команды из .bashrc . (См. 6.2 Файлы загрузки Bash в руководство GNU Bash .)
просто хотел перезвонить - чтобы даже файлы были скрыты в средстве просмотра, вы все равно можете открыть их все, только если вы просто введите имя файла. Например, если вы пишете адресную строку дельфина /home//.bashrc, он откроет файл с редактором по умолчанию, не переключая отображение /скрытие некоторых файлов.
Другой способ - просто открыть ваш любимый редактор и просто ввести имя файла.
Я вижу это как наиболее предпочтительный способ обработки скрытых файлов, показывая, что они не показывают просто добавление шума, которого можно избежать.
И псевдонимы должны войти в .bashrc как писал geirha .
Популярные теги
I can't find .bash_profile in Ubuntu 14.04 in my /home/user directory. I used the ls -a command to see the .bash_profile , but there isn't such a file.
It's pretty common that some configuration file (or even directories) are missing. In that case the software that should read them will use a default configuration and/or read other sources to retrieve the configuration. If you want to modify a configuration file that doesn't exist simply create it first.
Похожие вопросы
Похожие вопросы
5 Answers 5
It's a hidden file, located in your home folder:
(the ~ expands to your home directory. If your username is user , the result would be: /home/user/.bash_profile ).
Since it's an hidden file, you have to make it visible. To do it in Nautilus go to the "View" menu and check "Show hidden files" (or press the shortcut Ctrl + H ).
If you are using Kubuntu with Dolphin, you have to press Ctrl + . to toggle the visibility of files.
yeah, does linux even automatically pull in ~/.bash_profile? I am not seeing it being pulled in automatically when opening a new terminal session
@AlexanderMills, the default when opening a terminal emulator is to run the shell in interactive mode (but not login mode), so .bash_profile is not read since bash only tries to read that in login mode. .bash_profile will be used when you log in via ssh or in a virtual console (ctrl+alt+f1-f6). When you log in graphically, there's no bash involved, so no .bash_profile is read, however, the graphical login process will run sh and have sh source .profile specifically, before execing the session (e.g. gnome-session). So environment variables set in .profile will be available in the session.
You do not usually have .bash_profile on Ubuntu, nor should you usually create that file. As jpezz says, it would be in your home directory on your Ubuntu system, which is what ~ stands for, and you can create it there. But if you do, you should be careful, because it will prevent bash from automatically running the commands in .profile --which you almost certainly do have.
When bash runs as a login shell, in WSL or otherwise 1 , it runs the first of .bash_profile , .bash_login , or .profile that exists in your home directory. If you have bash -specific commands that you want to run when you log in--but only when bash is your shell--you could put them in .bash_profile . But the mere existence of .bash_profile would prevent .profile from being used.
So then you would want to source .profile from .bash_profile , assuming you wanted those commands to be run too, which you almost always would. You could do that by putting this command in .bash_profile :
(Some readers may be accustomed to seeing that written as . "$HOME/.profile" when it appears in a startup script. That's always fine--and you may prefer to use that for commands that need to work on shells other than bash too, if you need to accommodate extremely old shells that don't support standard features, which--well, you don't need that. In any case, bash always supports tilde expansion and the point of .bash_profile is that only bash runs commands from it, so . ~/.profile is fine.)
The . builtin sources a file, which is to say it runs all the commands from the file in the current shell. Open an interactive bash shell and run help . for more information.
The reason you don't usually have .bash_profile on Ubuntu even if you have bash -specific commands that you want to run on login is that, by default, users' .profile files contain code that checks if the current shell is bash , then causes such commands to be run.
There is another answer to the question of where files like .profile or .bash_profile are. The default versions of these files exist in the /etc/skel directory. Files in that directory are copied into the Ubuntu home directories when user accounts are created on an Ubuntu system--including the user account you create as part of installing Ubuntu. If you look in that directory, you'll notice that there is a file called .profile --as well as some other files like .bashrc --but there is no file called .bash_profile . That is why--or, really, how--no .bash_profile exists in your Ubuntu home directory unless you have created it yourself.
Finally, you should not put aliases in .profile at all, nor is .bash_profile a good place for them, as geirha rightly says. This is because you will want your aliases to work in interactive shells whether or not they are login shells. Instead, define your aliases in .bashrc or, better, .bash_aliases (as guest boeroe points out), which the default .bashrc sources. See How do I create a permanent Bash alias?
Meanwhile the default .bashrc will quit at the top without doing anything if it runs in in a non-interactive shell, so commands in it won't run if it gets sourced by .profile in a non-interactive login shell and in other more obscure scenarios 2 :
So if you put aliases in .bashrc or in .bash_aliases , you'll get them for interactive login shells (where .profile is used) as well as interactive non-login shells (where .bashrc is used). This is what you want. Just don't put anything above the interactivity check, unless you really, really know what you're doing.
1 This answer was originally written for a WSL-related question, but that question has been closed as a duplicate and this answer applies fully here as well, so I've expanded a bit and posted it here instead.
2 When bash detects that it is probably running as the initial shell of a remote login that is not a login shell--such as when you use ssh to run a single command on a remote machine--it runs commands from .bashrc . (See 6.2 Bash Startup Files in the GNU Bash manual.)
Important to note:
What I have talked about till now only applies to Bash itself, when you are logging into the system from a GUI, the display manager is responsible of sourcing the correct files.
Ubuntu uses gdm3 as its display manager, if we take a look at: /etc/gdm3/Xsession we can see that none of the files will get sourced except: .profile :
so if you are using a GUI to login, keep the file under .profile name otherwise you might miss some variables and settings in your environments.
I guess the better option is creating a symlink to .profile :
Now your data lives in .profile , gdm doesn't miss anything, bash loads .bash_profile which is actually .profile , and by editing each of them you get the same result.
I want to put new aliases to my .bash_profile file, but I cannot find this file.
Where is it supposed to be?
Популярные теги
В чем разница между .bashrc и .bash_profile и какой из них я должен использовать?
Традиционно, когда вы входите в систему Unix, система запускает для вас одну программу. Эта программа представляет собой оболочку, то есть программу, предназначенную для запуска других программ. Это оболочка командной строки: вы запускаете другую программу, введя ее имя. По умолчанию оболочка, оболочка Bourne, считывает команды из ~/.profile , когда она вызывается в качестве оболочки входа.
Bash - это оболочка, похожая на Bourne. Он читает команды из ~/.bash_profile , когда он вызывается в качестве оболочки входа, и если этот файл не существует¹, он пытается читать ~/.profile .
Вы можете вызвать оболочку напрямую в любое время, например, запустив эмулятор терминала внутри среды GUI. Если оболочка не является оболочкой входа, она не читает ~/.profile . Когда вы начинаете bash как интерактивную оболочку (т. Е. Не запускать скрипт), она читает ~/.bashrc (кроме случаев, когда она вызывается как оболочка входа, тогда она только читает ~/.bash_profile или ~/.profile .
~/.profile - это место, где можно помещать материал, который применяется ко всему вашему сеансу, например, программы, которые вы хотите запустить при входе в систему (но не в графических программах, они идут в другой файл) и определения переменных среды.
~/.bashrc - это место, в которое помещается материал, который применяется только к самому bash, например, определения псевдонима и функции, параметры оболочки и параметры подсказки. (Вы также можете установить привязки клавиш, но для bash они обычно входят в ~/.inputrc .)
~/.bash_profile может использоваться вместо ~/.profile , но он считывается только bash, а не какой-либо другой оболочкой. (Это в основном вызывает беспокойство, если вы хотите, чтобы ваши файлы инициализации работали на нескольких машинах, а ваша оболочка входа не была наброшена на всех из них.) Это логичное место, чтобы включить ~/.bashrc , если оболочка является интерактивной. Я рекомендую следующее содержимое в ~/.bash_profile :
В современных организациях есть дополнительное осложнение, связанное с ~/.profile . Если вы входите в графическую среду (то есть, если программа, в которой вы вводите пароль, работает в графическом режиме), вы автоматически не получаете оболочку входа, которая читает ~/.profile . В зависимости от графической программы входа в диспетчер окон или среды рабочего стола, которую вы запускаете впоследствии, и о том, как ваш дистрибутив настроил эти программы, ваш ~/.profile может быть прочитан или не доступен. Если это не так, обычно есть другое место, где вы можете определить переменные среды и программы для запуска при входе в систему, но, к сожалению, нет стандартного расположения.
Обратите внимание, что вы можете видеть здесь и там рекомендации, чтобы либо устанавливать определения переменных среды в ~/.bashrc , либо всегда запускать оболочки входа в терминалы. Оба - плохие идеи. Наиболее распространенная проблема с любой из этих идей заключается в том, что ваши переменные среды будут устанавливаться только в программах, запускаемых через терминал, а не в программах, запускаемых непосредственно с помощью значка или меню или сочетания клавиш.
¹ Для полноты, по запросу: если .bash_profile не существует, bash также пытается .bash_login , прежде чем вернуться к .profile . Не стесняйтесь забывать о существовании. Суб>
Согласно странице man bash, .bash_profile выполняется для входа в систему shell, в то время как .bashrc выполняется для интерактивные оболочки без входа.
Что такое учетная запись или недействительная оболочка?
При входе в систему (например: введите имя пользователя и пароль) через консоль, либо физически сидя на машине, когда загрузка или дистанционное управление через ssh: .bash_profile выполняется для настройки вещи перед исходной командой приглашение.
Но если вы уже вошли в систему вашей машине и открыть новый терминал window (xterm) внутри Gnome или KDE, то .bashrc выполняется до окно командной строки. .bashrc также запускается при запуске нового экземпляра bash путем ввода /bin /bash в терминале.
Чтобы поддержать это, shells предоставил файл .profile специально для 'login shells'. Это сделало бы это особым, после настройки сеанса. Bash продлил это несколько, чтобы посмотреть на .bash_profile сначала перед .profile, таким образом вы могли бы поставить bash только вещи там (чтобы они не испортили оболочку Bourne и т. Д., Которые также смотрели на .profile). Другие оболочки, не входящие в систему, просто будут генерировать rc-файл, .bashrc (или .kshrc и т. Д.).
Это немного анахронизм. Вы не входите в основную оболочку так же, как вы входите в диспетчер окон gui. Главное окно не отличается от любого другого окна.
Мое предложение - не беспокойтесь об этой разнице, оно основано на более старом стиле использования unix. Исключите разницу в ваших файлах. Все содержимое .bash_profile должно быть:
[ -f $HOME/.bashrc ] && . $HOME/.bashrc
И поставьте все, что вы на самом деле хотите установить в .bashrc
Помните, что .bashrc используется для всех оболочек, интерактивных и неинтерактивных. Вы можете закоротить источник для неинтерактивных оболочек, поставив этот код в начало .bashrc:
Для Bash они работают следующим образом. Прочитайте соответствующую колонку. Выполняет A, затем B, затем C и т. Д. B1, B2, B3 означает, что он выполняет только первый из найденных файлов.
ЛУЧШИЙ КОММЕНТАРИЙ ДЛЯ ГОЛОВЫ /ETC /ПРОФИЛЬ
Основываясь на замечательном ответе Flimm выше, я рассмотрел этот новый комментарий во главе моего Debian /etc /profile, (вам может потребоваться настроить его для вашего дистрибутива.) :
И эта заметка во главе каждого из других файлов настроек относится к ней:
Стоит отметить, что я думаю, что файлы /etc /profile Debian по умолчанию (включая) /etc/bash.bashrc (это когда /etc/bash.bashrc существует). Таким образом, сценарии входа в систему читают оба файла /etc, в то время как не-login читает только bash.bashrc.
Также следует отметить, что /etc/bash.bashrc настроен на то, чтобы ничего не делать, когда он не запускается в интерактивном режиме. Таким образом, эти два файла предназначены только для интерактивных скриптов.
5 Answers 5
Ubuntu uses ~/.profile .
you can create your .bash_profile in Ubuntu but then .profile will not be read.
If we read .profile content :
So use ~/.profile instead of ~/.bash_profile
Using .bash_profile does not work on Ubuntu. It uses Dash as a GUI login shell, not Bash, so bash_profile is not read.
When invoking a login shell bash will looks for its config files in this order:
After finding the first one, it stops looking for the others so if there is a .bash_profile in my $HOME bash will not look for .bash_login and .profile anymore.
From these three file names, Ubuntu by default uses .profile you can rename it to .bash_profile if you like:
Now if we open a new bash shell using bash -l , su - $USER , sudo -u $USER -i or any other commands that runs bash as a login shell, ~/.bash_profile will get sourced.
Читайте также: