วิธีการโหลด. bash_profile จากบรรทัดคำสั่งได้อย่างไร


995

ฉันจะโหลดซ้ำ.bash_profileจากบรรทัดคำสั่งได้อย่างไร

ฉันสามารถรับเชลล์เพื่อรับรู้การเปลี่ยนแปลง.bash_profileโดยออกและเข้าสู่ระบบกลับ แต่ฉันต้องการที่จะสามารถทำมันได้ตามต้องการ

คำตอบ:


1881

เพียงพิมพ์ 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"';
Cristian Batista

1
สำหรับคนที่ลืมว่าคุณเปลี่ยนมาใช้ OhMyZsh เรียกใช้ open ~ / .zshrc และทำการเปลี่ยนแปลงที่นั่นแทน. bash_profile ของคุณ
Sankofa

106
. ~/.bash_profile

ตรวจสอบให้แน่ใจว่าคุณไม่มีการอ้างอิงใด ๆ เกี่ยวกับสถานะปัจจุบันในนั้น


15
ทำไมจึงใช้งานได้ คือ.คำสั่งในกรณีนี้คืออะไร?
โยนาห์

9
ผู้ประกอบการจุด:.เป็นเพียงนามแฝงสำหรับsourceคำสั่ง
Graham P Heath

8
@ GrahamPHeath - พูดอย่างเคร่งครัดฉันคิดว่ามันเป็นวิธีอื่น ๆ .เก่ากว่าsourceคือ
Carl Norum

4
sourceเป็นการใช้งานเฉพาะของ bash.
Thirupathi Thangavel

7
@ StasS - .และsourceเป็นสิ่งเดียวกันในทุบตี จากลิงค์: " sourceเป็นคำพ้องความหมายสำหรับจุด / จุด ' .' ในทุบตี แต่ไม่ใช่ใน POSIX sh ดังนั้นเพื่อความเข้ากันได้สูงสุดให้ใช้ช่วงเวลา"
Carl Norum

31

เพียงพิมพ์:

. ~/.bash_profile

แต่ถ้าคุณต้องการแหล่งที่มาให้ทำงานโดยอัตโนมัติเมื่อเริ่มต้นสถานีแทนการใช้มันทุกครั้งที่คุณเปิด terminal คุณอาจจะเพิ่ม. ~/.bash_profileไปยัง~/.bashrcไฟล์

บันทึก:

เมื่อคุณเปิดสถานีที่จะเริ่มต้นในสถานีทุบตี (ยังไม่ได้เข้าสู่ระบบ) ~/.bashrcโหมดโต้ตอบซึ่งหมายความว่ามันจะแหล่งที่มา

~/.bash_profileมีที่มาโดยเฉพาะทุบตีเมื่อเริ่มต้นในโหมดเข้าสู่ระบบแบบโต้ตอบ นั่นคือมักจะเฉพาะเมื่อคุณเข้าสู่ระบบที่คอนโซล ( Ctrl+ Alt+ F1.. F6) sshหรือเชื่อมต่อผ่าน


15

คุณยังสามารถใช้คำสั่งนี้เพื่อรีโหลด ~ / .bash_profile สำหรับผู้ใช้นั้น ตรวจสอบให้แน่ใจว่าใช้เส้นประ

su - username

6
สิ่งนี้จะเรียกใช้เชลล์ทั้งตัวภายในเชลล์ซึ่งห่างไกลจากอุดมคติ ตัวเลือกอื่น ๆ เพียงแค่เรียกใช้ไฟล์ที่เกี่ยวข้องอีกครั้งซึ่งหมายความว่าพวกเขา (A) เกี่ยวข้องกับคำถามที่ถามจริงและ (B) ไม่ซ้อนเชลล์และอาจโหลดสิ่งอื่น ๆ ที่ไม่ควรเป็น (env vars ฯลฯ ) มีมีวิธีการที่เหมาะสมที่จะเปลี่ยนเปลือกปัจจุบันทันที (โดยไม่ต้องทำรัง) ตั้งแต่ที่นอกเรื่องฉันจะปล่อยให้ผู้อ่านที่สนใจในการค้นหาอื่น ๆ แต่
underscore_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 (อย่างน้อยไม่ได้อยู่ในรุ่นที่ฉันใช้ - เซียร์รา) เพราะเพียงแค่ทำเช่นนั้นจะเรียกใช้ล็อกอินเชลล์ซึ่งไม่รัน. bash_profile
Ulukai

@Ulukai เห็นได้ชัดว่าเพิ่งพิมพ์. .bash_profileในขณะที่อยู่ในไดเรกทอรีบ้านของคุณบน Mac จะทำงาน เช่นเดียวกับคำตอบที่ให้ไว้ข้างต้นโดย 7urkm3n
Cassandra

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

หรือถ้าต้องการเพิ่มบันทึกผ่านฟังก์ชั่น

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

ไม่ได้การตั้งค่าตามต้องการ หากต้องการเพิ่มบางเส้นพิมพ์พิเศษแสดงสถานะมิได้เพียงแค่ไปก็. ~/. bash_profile มิได้source ~/.bash_profile
7urkm3n

1

ฉันใช้เซียร่าและกำลังทำสิ่งนี้อยู่พักหนึ่ง (ลองใช้โซลูชันที่แนะนำทั้งหมด) ฉันเริ่มสับสนแล้วจึงลองรีสตาร์ทคอมพิวเตอร์ในที่สุด! มันได้ผล

ข้อสรุปของฉันคือบางครั้งจำเป็นต้องรีเซ็ตฮาร์ด


1
ไมค์ใช่การฮาร์ดรีเซ็ตจะทำงานได้เพราะทุกอย่างถูกโหลดใหม่ ตราบใดที่การเปลี่ยนแปลงที่คุณทำนั้นใช้งานได้มันจะมีผลในการบูตครั้งถัดไป อย่างไรก็ตามมันจะง่ายกว่าถ้าคุณขุดลงไปเล็กน้อยเพื่อหาคำสั่ง / วิธีการเพียงแค่รีเฟรช bash โดยไม่ต้องทำตลอดเวลา จะมีวิธีหนึ่งในการทำให้สำเร็จโดยไม่ต้องรีบูตซึ่งแน่นอนว่าจะใช้เวลามากเกินไปในการดูว่าการเปลี่ยนแปลงล่าสุดนั้นใช้งานได้หรือไม่! อาจดูที่osxdaily.com/2016/06/07/…
Cassandra

1
ใช่ฉันลองทั้งคำสั่งตัวย่อและเต็มเพื่อโหลดโปรไฟล์ทุบตี / เส้นทาง มันไม่ทำงานเพียงออกจากระบบและกลับมาทำงาน แปลก
Bjorks แฟนหมายเลขหนึ่ง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.