Làm cách nào để tải lại .bash_profile từ dòng lệnh?


996

Làm thế nào tôi có thể tải lại .bash_profiletừ dòng lệnh ?

Tôi có thể nhận được trình bao để nhận ra các thay đổi .bash_profilebằng cách thoát và đăng nhập lại nhưng tôi muốn có thể thực hiện theo yêu cầu.

Câu trả lời:


1882

Đơn giản chỉ cần gõ source ~/.bash_profile

Ngoài ra, nếu bạn muốn lưu tổ hợp phím, bạn có thể nhập . ~/.bash_profile


49
Thế còn alias BASHRELOAD=". ~/.bash_profile". Nếu bạn làm điều này thường xuyên, bạn có thể chỉ bí danh là br.
bobobobo

1
bất kỳ lý do tại sao tôi cần phải làm điều này mỗi lần / phiên? Tôi không thể nhận các thay đổi được thực hiện cho .bash_profile ngay cả khi chúng có trong tệp khi tôi mở nó trong trình chỉnh sửa. Gây nhầm lẫn.
erwinheiser

3
@erwinheiser là hệ thống của bạn đang tải tập tin? Một số hệ thống sử dụng các tệp khác, chẳng hạn như ~ / .bashrc.
Graham P Heath

1
Nếu bạn muốn biết nếu có sự cố xảy ra trên tải, bạn có thể sử dụng:alias reload='source ~/.bash_profile && echo "File .bash_profile reloaded correctly" || echo "Syntax error, could not import the file"';
Cristian Batista

1
Đối với những người quên rằng bạn đã chuyển sang OhMyZsh. chạy mở ~ / .zshrc và thực hiện các thay đổi ở đó thay vì .bash_profile của bạn
Sankofa

106
. ~/.bash_profile

Chỉ cần đảm bảo rằng bạn không có bất kỳ sự phụ thuộc nào vào trạng thái hiện tại ở đó.


15
Tại sao điều này làm việc? Tức là .lệnh trong trường hợp này là gì?
Giô-na

9
toán tử dấu chấm:. chỉ đơn giản là một bí danh cho sourcelệnh.
Graham P Heath

8
@GrahamPHeath - nói đúng ra tôi nghĩ đó là cách khác; càng .già càng tốt source.
Carl Norum

4
sourcelà một triển khai cụ thể của bash.
Thirupathi Thangavel

7
@StasS - .sourcetheo nghĩa đen là điều tương tự trong bash. Từ liên kết: " sourcelà từ đồng nghĩa với dấu chấm / dấu chấm ' .' trong bash, nhưng không phải trong POSIX sh, vì vậy để tương thích tối đa, hãy sử dụng dấu chấm ."
Carl Norum

31

Đơn giản chỉ cần gõ:

. ~/.bash_profile

Tuy nhiên, nếu bạn muốn nguồn nó tự động chạy khi thiết bị đầu cuối khởi động thay vì chạy nó mỗi khi bạn mở thiết bị đầu cuối, bạn có thể thêm . ~/.bash_profilevào ~/.bashrctệp.

Ghi chú:

Khi bạn mở một thiết bị đầu cuối, thiết bị đầu cuối bắt đầu bash trong chế độ tương tác (không đăng nhập), có nghĩa là nó sẽ nguồn ~/.bashrc.

~/.bash_profilechỉ có nguồn gốc từ bash khi bắt đầu trong chế độ đăng nhập tương tác . Điều đó thường chỉ khi bạn đăng nhập tại bảng điều khiển ( Ctrl+ Alt+ F1.. F6) hoặc kết nối qua ssh.


15

Bạn cũng có thể sử dụng lệnh này để tải lại ~ / .bash_profile cho người dùng đó. Hãy chắc chắn để sử dụng dấu gạch ngang.

su - username

6
Điều này sẽ gọi toàn bộ vỏ trong một vỏ, xa lý tưởng. Các tùy chọn khác chỉ đơn giản là thực hiện lại tệp có liên quan, nghĩa là chúng (A) thực sự có liên quan đến câu hỏi được hỏi và (B) không chồng chất vỏ và có thể tải lại những thứ khác không nên (env vars, v.v.). Ở đó nhiều cách thích hợp để thay thế vỏ hiện tại hoàn toàn (không lồng nhau), nhưng vì đó là chủ đề ngoài luồng, tôi sẽ để độc giả quan tâm tìm kiếm ở nơi khác.
gạch dưới

3
bạn đang mở một shell khác, đây không phải là tải lại, bạn cũng có thể mở một thiết bị đầu cuối mới hoặc đăng nhập lại
Juan Diego

15

Tôi thích thực tế là sau khi bạn vừa chỉnh sửa tệp, tất cả những gì bạn cần làm là gõ:

. !$

Điều này nguồn các tập tin bạn vừa chỉnh sửa trong lịch sử. Xem đô la bang là gì trong bash .


11
  1. Lưu .bash_profile tệp
  2. Thư mục nhà của người dùng bằng cách gõ cd
  3. Tải lại hồ sơ với . .bash_profile

8
Chỉ cần về nhà với cd. Không cần ~.
roNn23

8
Không cần cd- bạn chỉ có thể tải lại từ thư mục bạn hiện đang ở:. ~/.bash_profile
Alex Villa

10

Nếu bạn không nhớ mất lịch sử của thiết bị đầu cuối vỏ hiện tại của bạn, bạn cũng có thể làm

bash -l

Điều đó sẽ rẽ nhánh của bạn và mở ra một quá trình bash con khác. Các -ltham số nói bash để chạy như một vỏ đăng nhập, điều này là cần thiết vì .bash_profile sẽ không chạy như một vỏ phi đăng nhập, để biết thêm về điều này đọc ở đây

Nếu bạn muốn thay thế hoàn toàn vỏ hiện tại, bạn cũng có thể làm:

exec bash -l

Ở trên sẽ không rẽ nhánh vỏ hiện tại của bạn mà thay thế nó hoàn toàn, vì vậy khi bạn gõ exitnó sẽ chấm dứt hoàn toàn, thay vì thả bạn vào vỏ trước đó.


bạn sẽ không mất lịch sử nếu bạn đang sử dụng iterm2
Xitcod13

4

Thêm alias bashs="source ~/.bash_profile"vào tập tin bash của bạn. Vì vậy, bạn có thể gọi bashstừ lần sau


1
Tôi bí danh rằng reset- dễ nhớ hơn
jcollum

3

nếu .bash_profile không tồn tại, bạn có thể thử chạy lệnh sau:

. ~/.bashrc 

hoặc là

 source ~/.bashrc

thay vì .bash_profile. Bạn có thể tìm thêm thông tin về bashrc


3

Tôi muốn đăng một câu trả lời nhanh rằng trong khi sử dụng source ~/.bash_profilehoặc các câu trả lời được đề cập ở trên hoạt động, một điều cần đề cập là điều này chỉ tải lại hồ sơ bash của bạn trong tab hoặc phiên hiện tại bạn đang xem. Nếu bạn muốn tải lại hồ sơ bash của mình trên mỗi tab / shell, bạn cần nhập thủ công lệnh này trong mỗi chúng.

Nếu bạn sử dụng iTerm, bạn có thể sử dụng CMD⌘+ Shift+ Iđể nhập lệnh vào tất cả các tab hiện tại . Đối với thiết bị đầu cuối có thể hữu ích để tham khảo vấn đề này ;



2

Tôi sử dụng Debian và tôi có thể chỉ cần gõ exec bashđể đạt được điều này. Tôi không thể nói nếu nó sẽ hoạt động trên tất cả các bản phân phối khác.


2
Điều này sẽ không hoạt động trong Mac (ít nhất là không phải trong phiên bản tôi đang sử dụng - Sierra) bởi vì chỉ cần thực hiện việc không có vỏ đăng nhập không chạy .bash_profile
Ulukai

@Ulukai rõ ràng chỉ cần gõ . .bash_profiletrong khi thư mục nhà của bạn trên Mac sẽ thực hiện công việc. Tương tự như câu trả lời được đưa ra ở trên bởi 7urkm3n.
Cassandra

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

hoặc nếu muốn thêm nhật ký thông qua các chức năng

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

Không, đó là ưu tiên của bạn. Nếu muốn thêm một số dòng in thêm cho thấy tình trạng cũng không chỉ đơn giản là đi . ~/. bash_profile cũng khôngsource ~/.bash_profile
7urkm3n

1

Tôi đang chạy Sierra và đã làm việc này một thời gian (thử tất cả các giải pháp được đề xuất). Tôi trở nên bối rối nên cuối cùng đã thử khởi động lại máy tính của tôi! Nó đã làm việc

kết luận của tôi là đôi khi thiết lập lại cứng là cần thiết


1
Mike có một thiết lập lại cứng sẽ hoạt động bởi vì mọi thứ sau đó được tải mới. Miễn là những thay đổi bạn đã thực hiện là có chức năng, thì nó sẽ có hiệu lực trong lần khởi động tiếp theo. Tuy nhiên, sẽ dễ dàng hơn cho bạn để tìm hiểu một chút để tìm lệnh / phương thức để chỉ cần làm mới bash mà không phải làm điều đó mọi lúc. Sẽ có một cách để đạt được nó mà không cần khởi động lại, tất nhiên sẽ ngấm quá nhiều thời gian chỉ để xem liệu thay đổi mới nhất có hoạt động không! Có lẽ hãy xem osxd Daily.com/2016/06/07/ khăn
Cassandra

1
yeah tôi đã thử cả hai lệnh viết tắt và đầy đủ để tải lại hồ sơ / đường dẫn bash. nó không hoạt động, chỉ đăng xuất và hoạt động trở lại. kỳ lạ
Người hâm mộ số một của Bjork
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.