как перезагрузить .bash\_profile из командной строки?

<p>как я могу перезагрузить <code>.bash\_profile</code> из командной строки? я могу заставить shell распознавать изменения в <code>.bash\_profile</code>, выйдя и войдя обратно, но я бы хотел сделать это по требованию.</p>

<p>просто введите <code>source ~/.bash\_profile</code></p><p>кроме того, если вам нравится сохранять нажатия клавиш, вы можете набрать <code>. ~/.bash\_profile</code></p>

<pre><code>. ~/.bash\_profile </code></pre><p>просто убедитесь, что у вас нет никаких зависимостей от текущего состояния.</p>

<p>просто введите:</p><pre><code>. ~/.bash\_profile </code></pre><p>однако если вы хотите, чтобы исходный код запускался автоматически при запуске терминала, а не каждый раз, когда вы открываете терминал, вы можете добавить <code>. ~/.bash\_profile</code> в файл <code>~/.bashrc</code>.</p><p><strong>примечание:</strong></p><p>когда вы открываете терминал, терминал запускает bash в интерактивном режиме (не входящем в систему), что означает, что он будет источником <code>~/.bashrc</code>.</p><p><code>~/.bash\_profile</code> получает только bash при запуске в <strong>интерактивный режим входа в систему</strong>. обычно это происходит только при входе в консоль (<kbd>ctrl</kbd>+<kbd>alt</kbd>+<kbd>f1</kbd>..<kbd>f6</kbd>) или подключение через <code>ssh</code>.</p>

<p>вы также можете использовать эту команду для перезагрузки ~/.bash\_profile для этого пользователя. обязательно используйте тире.</p><pre><code>su - username </code></pre>

<ol> <li>сохранить<strong> .bash\_profile </strong>file </li> <li>перейдите в домашний каталог пользователя, набрав <code>cd</code> </li> <li>перезагрузите профиль с помощью <code>. .bash\_profile</code> </li> </ol>

<p>мне нравится тот факт, что после того, как вы только что отредактировали файл, все, что вам нужно сделать, это набрать:</p><pre><code>. !$ </code></pre><p>это источник файла, который вы только что отредактировали в истории. смотрите <a href="https://stackoverflow.com/questions/41385015/what-is-bang-dollar-in-bash">что такое взрыв доллара в bash</a> .</p>

<p>вам просто нужно ввести <code>. ~/.bash\_profile</code></p><p>обратитесь: <a href="https://superuser.com/questions/46139/what-does-source-do">https://superuser.com/questions/46139/what-does-source-do</a> </p>

<p>добавьте <code>alias bashs="source ~/.bash\_profile"</code> в ваш bash-файл . чтобы вы могли вызывать <code>bashs</code> в следующий раз</p>

<p>если файл .bash\_profile не существует, вы можете попробовать выполнить следующую команду:</p><pre><code>. ~/.bashrc </code></pre><p>или же</p><pre><code> source ~/.bashrc </code></pre><p>вместо .bash\_profile . вы можете найти больше информации о <a href="https://unix.stackexchange.com/questions/129143/what-is-the-purpose-of-bashrc-and-how-does-it-work">bashrc</a> </p>

<p>если вы не против потерять историю вашего текущего терминала shell, вы также можете сделать</p><p><code>bash -l</code></p><p>это раскошелит вашу shell и откроет еще один дочерний процесс bash. параметр <code>-l</code> указывает bash запускаться как оболочка входа в систему, это необходимо, потому что .bash\_profile не будет работать как оболочка без регистрации, для получения дополнительной информации об этом <a href="https://unix.stackexchange.com/questions/119627/why-are-interactive-shells-on-osx-login-shells-by-default">читайте здесь</a> </p><p>если вы хотите полностью заменить текущую оболочку, вы также можете сделать:</p><p><code>exec bash -l</code></p><p>вышеприведенное не будет ветвить вашу текущую оболочку, но полностью ее заменит, поэтому, когда вы наберете <code>exit</code>, она полностью прекратит работу, а не перенесет вас в предыдущую оболочку.</p>

<p>я хотел опубликовать быстрый ответ, что, хотя <code>source ~/.bash\_profile</code> или ответы, упомянутые выше, работают, стоит упомянуть, что это только перезагружает ваш профиль bash на текущей вкладке или сеансе, который вы просматриваете. если вы хотите перезагрузить свой профиль bash на каждой вкладке/оболочке, вам нужно вручную ввести эту команду в каждую из них.</p><p>если вы используете <a href="http://blog.blakesimpson.co.uk/read/35-send-command-to-all-iterm-2-panes">iterm, вы можете использовать <kbd>cmd⌘</kbd>+<kbd>shift</kbd>+<kbd>i</kbd> ввести команду во все текущие вкладки</a> . для терминала может быть полезно сослаться на это <a href="https://unix.stackexchange.com/questions/89339/how-do-i-run-the-same-linux-command-in-more-than-one-tab-shell-simultaneously">проблема</a> ;</p>

<pre><code>alias reload!=". ~/.bash\_profile" </code></pre><p>или если хотите добавить логи через функции</p><pre><code>function reload! () { echo "reloading bash profile...!" source ~/.bash\_profile echo "reloaded!!!" } </code></pre>

<p>я использую debian, и я могу просто набрать <code>exec bash</code>, чтобы добиться этого. я не могу сказать, будет ли это работать на всех других дистрибутивах.</p>

<p>я использую sierra и некоторое время работал над этим (пробовал все рекомендуемые решения). я запутался, поэтому в конце концов попытался перезагрузить компьютер! это сработало</p><p>я пришел к выводу, что иногда необходим жесткий сброс</p>