Як перезавантажити .bash_profile з командного рядка?


994

Як я можу перезавантажити .bash_profileз командного рядка ?

Я можу змусити оболонку розпізнати зміни .bash_profile, вийшовши та увійшовши назад, але я хотів би мати можливість це робити на вимогу.

Відповіді:


1880

Просто введіть source ~/.bash_profile

Крім того, якщо вам подобається збереження натискань клавіш, ви можете набрати . ~/.bash_profile


49
Як щодо alias BASHRELOAD=". ~/.bash_profile". Якщо ви робите це часто, ви можете просто називати його як br.
bobobobo

1
будь-яка причина, чому мені потрібно робити це кожен раз / сеанс? Я не можу внести зміни до .bash_profile, щоб вони зберігалися, навіть якщо вони є у файлі, коли я відкриваю його в редакторі. Заплутаний.
erwinheiser

3
@erwinheiser ваша система завантажує файл? Деякі системи використовують інші файли, наприклад ~ / .bashrc.
Graham P Heath

1
Якщо ви хочете дізнатися, чи щось пішло не так на навантаженні, ви можете використовувати:alias reload='source ~/.bash_profile && echo "File .bash_profile reloaded correctly" || echo "Syntax error, could not import the file"';
Крістіан Батіста

1
Для людей, які забули, що ви перейшли на OhMyZsh. запустіть ~ / .zshrc і внесіть зміни замість вашого .bash_profile
Sankofa

105
. ~/.bash_profile

Просто переконайтесь, що у вас немає ніяких залежностей від поточного стану.


15
Чому це працює? Тобто, яка .команда в цьому випадку?
Йона

9
оператор крапки:. просто псевдонім для sourceкоманди.
Graham P Heath

8
@GrahamPHeath - строго кажучи, я думаю, що це навпаки; тим .старше, ніж sourceє.
Карл Норум

4
source- це .
реальна

7
@StasS - .і sourceбуквально одне і те ж саме в bash. За посиланням: " sourceє синонімом точки / періоду" ."в bash, але не в POSIX sh, тому для максимальної сумісності використовуйте період".
Карл Норум

31

Просто введіть:

. ~/.bash_profile

Однак, якщо ви хочете, щоб джерело його запускалося автоматично, коли термінал запускається замість того, щоб запускати його кожен раз, коли ви відкриваєте термінал, ви можете додати . ~/.bash_profileдо ~/.bashrcфайлу.

Примітка:

Коли ви відкриваєте термінал, термінал починає баш в інтерактивному режимі (не вхід в систему), що означає, що він буде джерелом ~/.bashrc.

~/.bash_profileотримується лише bash при запуску в режимі інтерактивного входу . Це, як правило, лише під час входу в консоль ( Ctrl+ Alt+ F1.. F6) або підключення через ssh.


15

Ви також можете скористатися цією командою для перезавантаження ~ / .bash_profile для цього користувача. Обов’язково використовуйте тире.

su - username

6
Це викликає цілу оболонку в оболонці, далеко не ідеальну. Інші параметри просто повторно виконують відповідний файл, тобто вони (A) фактично відповідають заданому питанню та (B) не накопичують оболонки і, можливо, перезавантажують інші речі, яких не повинно бути (env vars тощо). Там є належними способами , щоб замінити поточну оболонку безпосередньо (без вкладеності), але так як це не по темі, я залишу зацікавлені читач шукати в іншому місці.
підкреслюйте_d

3
ви відкриваєте іншу оболонку, це не перезавантаження, ви можете також відкрити новий термінал або перейти в журнал
Juan Diego

15

Мені подобається те, що після того, як ви тільки що відредагували файл, все, що вам потрібно зробити, - це набрати:

. !$

Це джерело файлу, який ви щойно редагували в історії. Дивіться, що таке чудовий долар в баш .


11
  1. Збережіть .bash_profile файл
  2. Введіть домашній каталог користувача, ввівши cd
  3. Перезавантажте профіль за допомогою . .bash_profile

8
Просто піди додому з cd. Не потрібно ~.
roNn23

8
Не потрібно cd- ви можете просто перезавантажити його з каталогу, в якому ви зараз перебуваєте:. ~/.bash_profile
Alex Villa

10

Якщо ви не проти втратити історію свого поточного терміналу оболонки, ви також можете це зробити

bash -l

Це розкладе вашу оболонку і відкриє ще один дочірній процес баш. -lПараметр каже Баш для роботи в якості оболонки, це необхідно тому , що .bash_profile не працюватиме , як не реєструвалися оболонка, для отримання додаткової інформації про це читайте тут

Якщо ви хочете повністю замінити поточну оболонку, ви також можете зробити:

exec bash -l

Вищезгадане не розщепить вашу поточну оболонку, але замінить її повністю, тому при введенні exitвона повністю припиниться, а не перекине вас на попередню оболонку.


ви не будете втрачати свою історію, якщо використовуєте iterm2
Xitcod13

4

Додайте alias bashs="source ~/.bash_profile"у свій файл bash. Тож можна дзвонити bashsз наступного разу


1
Я псевдонім, що reset- простіше запам’ятати
jcollum

3

якщо .bash_profile не існує, ви можете спробувати виконати таку команду:

. ~/.bashrc 

або

 source ~/.bashrc

замість .bash_profile. Ви можете знайти більше інформації про bashrc


3

Я хотів опублікувати швидку відповідь, що під час використання source ~/.bash_profileабо згаданих вище відповідей працює одне, що слід зазначити, що це лише перезавантажує ваш баш-профіль на поточній вкладці або сесії, яку ви переглядаєте. Якщо ви хочете перезавантажити свій bash-профіль на кожній вкладці / оболонці, вам потрібно ввести цю команду вручну в кожну з них.

Якщо ви використовуєте iTerm, ви можете використовувати CMD⌘+ Shift+ Iдля введення команди у всі поточні вкладки . Для терміналу може бути корисним посилання на це питання ;



2

Я використовую Debian і можу просто набрати текст, exec bashщоб досягти цього. Я не можу сказати, чи буде це працювати на всіх інших дистрибутивах.


2
Це не буде працювати в Mac (принаймні, не у версії, яку я використовую - Sierra), тому що просто виконуючи цю команду без оболонки для входу, яка не запускає .bash_profile
Ulukai

@Ulukai, мабуть, лише введення . .bash_profileв домашній каталог на Mac зробить цю роботу. Те саме, що відповідь, дана вище 7urkm3n.
Кассандра

2
alias reload!=". ~/.bash_profile"

або якщо ви хочете додати журнали за допомогою функцій

function reload! () {
    echo "Reloading bash profile...!"
    source ~/.bash_profile
    echo "Reloaded!!!"
}

Ні, це на ваш перевага. Якщо хочете додати додаткові рядки друку , що показують статус і не просто піти просто . ~/. bash_profile ніsource ~/.bash_profile
7urkm3n

1

Я керую Сієррою, і працював над цим деякий час (пробуючи всі рекомендовані рішення). Я збентежився, тому врешті-решт спробував перезапустити комп’ютер! Це спрацювало

мій висновок полягає в тому, що іноді потрібен жорсткий перезавантаження


1
Майк так, жорсткий скидання спрацює, тому що все завантажується свіжо. Поки внесені вами зміни будуть функціональними, вони почнуть діяти при наступному завантаженні. Однак вам буде простіше трохи розкопатися, щоб знайти команду / метод, щоб просто оновити баш, не маючи цього робити весь час. Буде спосіб досягти цього без перезавантаження, що, звичайно, забирає занадто багато часу, просто щоб побачити, чи працює остання зміна! Можливо, подивіться на osxdaily.com/2016/06/07/…
Кассандра

1
так, я спробував як скорочену, так і повну команду, щоб перезавантажити профіль bash / шлях. він не працював, лише виходив із системи та знову працював. дивно
Вболівальник номер один Бьоркс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.