ความแตกต่างระหว่าง~/.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มีไว้สำหรับล็อกอินเชลล์หรือเชลล์ที่ดำเนินการเมื่อล็อกอิน