ความแตกต่างระหว่าง~/.profile
และ~/.bash_profile
คืออะไร?
ความแตกต่างระหว่าง~/.profile
และ~/.bash_profile
คืออะไร?
คำตอบ:
นี่.profile
คือการกำหนดค่าโปรไฟล์ดั้งเดิมสำหรับเชลล์เป้าหมาย (aka, sh
) bash
เป็นเปลือกที่เข้ากันได้ Bourne จะอ่านและใช้งานได้ .bash_profile
ในมืออื่น ๆ bash
จะถูกอ่านโดยเฉพาะ มันมีไว้สำหรับคำสั่งที่เข้ากันไม่ได้กับเชลล์เป้าหมายมาตรฐาน
.profile
ให้เข้ากันบอร์นจะอ่าน เช่นbash
และksh
แต่ไม่หรือcsh
tcsh
และzsh
ให้ทั้งสองsh
และcsh
เข้ากันได้ดังนั้นมันจะอ่านทั้งสอง.profile
และ.login
เช่นเดียวกับzsh
ไฟล์จุดที่เฉพาะเจาะจง
ต้นฉบับsh
มาจากการ.profile
เริ่มต้น
bash
จะพยายามที่จะมา.bash_profile
ครั้งแรก แต่ถ้าที่ไม่อยู่ก็จะมาที่ 1.profile
โปรดทราบว่าถ้าbash
จะเริ่มต้นเป็นsh
(เช่น/bin/sh
การเชื่อมโยงไปยัง/bin/bash
) หรือเริ่มต้นด้วย--posix
ธงมันพยายามที่จะเลียนแบบและมีเพียงอ่านsh
.profile
เชิงอรรถ:
.bash_profile
, .bash_login
,.profile
ดูสิ่งนี้ด้วย:
คุณรู้ว่ามีกระสุนจำนวนมากในโลก UNIX แต่ส่วนใหญ่เป็น:
/bin/sh
(นักประดิษฐ์: Stephen Bourne)/bin/bash
(ผู้ประดิษฐ์: Brian Fox ภายใต้โครงการ GNU) (กระสุนทรงพลัง)/bin/csh
(นักประดิษฐ์: Bill Joy, ผู้ประดิษฐ์ TCP / IP Stack)/bin/ksh
(ผู้ประดิษฐ์: David Korn ภายใต้ Bell Labs)/bin/zsh
(กระสุนทรงพลัง)/bin/tcsh
(มาจาก C Shell)/bin/dash
(มาจาก Almquist shell (เถ้าภายใต้โครงการ NetBSD)) (Dash เกิดจาก lenny)แต่คำถามของคุณเกี่ยวกับ~/.bash_profile
และ~/.profile
:
เมื่อคุณล็อกอินเข้าสู่เครื่อง UNIX มันจะเปลี่ยนเส้นทางไปยังโฮมไดเร็กตอรี่ของคุณ, ตามเชลล์ที่ผู้ดูแลระบบเลือกในฟิลด์สุดท้าย/etc/passwd
เช่น:
mohsen:x:1000:1000:Mohsen Pahlevanzadeh,,,:/home/mohsen:/bin/bash
เปลือกของคุณทำงานและเริ่มต้นแต่ละเปลือกมีไฟล์ชุดและlogin
logout
เมื่อคุณเข้าสู่ระบบในทุบตี~/.profile
มีการเรียกใช้และเมื่อคุณlogout
, ~/.bash_logout
มีการเรียกใช้
~/.bash_history
ไฟล์เก็บคำสั่งอินพุตของคุณ
~/.login
เมื่อคุณเข้าสู่ระบบ~/.logout
เมื่อคุณออกจากระบบ~/.tcshrc
เช่นเดียวกับ~./bashrc
ในทุบตีคุณสามารถตั้งค่าตัวแปร$histfile
เป็นชื่อไฟล์ประวัติและตัวแปร$history
เป็นจำนวนคำสั่งที่จะเก็บไว้
แน่นอนว่ามันคือกระสุนที่ทรงพลังและถ้าคุณได้รับเวลาว่างให้แน่ใจว่าได้ย้ายไปยังมัน
ยกเว้นเชลล์อื่นเชลล์ Z มีไฟล์กำหนดค่าและไฟล์กำหนดค่าเริ่มต้นมากมายฉันแค่เขียน:
$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
/tmp/zsh*
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin
หมายเหตุ: หาก$ZDOTDIR
ไม่มีการตั้งค่าชุดโฮม
หมายเหตุ: TENEX C เชลล์แยกจาก C เชลล์ C เชลล์รองรับโดย BSD หากคุณคุ้นเคยกับการเขียนโปรแกรมภาษา C คุณควรสบายใจเนื่องจากไวยากรณ์นั้นคล้ายกัน
~/.login
~/.cshrc
~/.logout
หมายเหตุ: csh เก่า ใช้ tcsh แทน
~/.profile
มันเป็นเชลล์ที่ทรงพลังมากและเกิดภายใต้โครงการ GNU และถูก Bourne Shell นำเสนอ
~/.bash_login
~/.bash_logout
~/.bashrc
~/.bash_profile
~/.bash_history
เมื่อคุณเข้าสู่ระบบทุบตีวิ่ง~/.bash_profile
และวิ่ง~/.bash_profile
~/.bashrc
อันที่จริง~/.bashrc
ไม่ได้เป็นไฟล์เริ่มต้นทุบตีเพราะทุบตีไม่ทำงาน
มันตายแล้ว แม้ในขณะที่คุณใช้คุณจะเห็นด้วยตนเองman sh
dash
[หมายเหตุบรรณาธิการ: ส่วนเล็กน้อยdash
ใช้กับดิสทริบิวชั่นเดเบียนและเดเบียนอย่าง Ubuntu เท่านั้น]
~/.bash_profile
ทำงานภายใต้ bash แต่~/.profile
ทำงานภายใต้ Bourne และ Korn shell
เปลือกเข้าสู่ระบบเป็นเพียงเปลือกคุณสามารถเข้าสู่ระบบผ่านทางมัน ssh หรือที่คอนโซล เชลล์ที่ไม่ใช่การล็อกอินคือเชลล์ที่บางคนไม่สามารถล็อกอินได้เช่นกัน เชลล์ที่ไม่ใช่การล็อกอินมักถูกใช้โดยโปรแกรม / บริการของระบบ
สำหรับจุดที่สามของคุณ เป็นจริง.bashrc
ถูกดำเนินการในแต่ละอินสแตนซ์ของเชลล์ อย่างไรก็ตาม.bash_profile
จะใช้เฉพาะเมื่อเข้าสู่ระบบ ดังนั้นเหตุผลสำหรับทั้งสองไฟล์แยกกัน
.profile
สำหรับสิ่งที่ไม่เกี่ยวข้องโดยเฉพาะกับ Bash เช่นตัวแปรสภาพแวดล้อม $ PATH มันควรจะใช้ได้ทุกเวลา .bash_profile
มีไว้สำหรับล็อกอินเชลล์หรือเชลล์ที่ดำเนินการเมื่อล็อกอิน