อะไรคือความแตกต่างระหว่าง. profile และ. bash_profile และทำไมฉันจึงไม่มีไฟล์. profile ในระบบของฉัน


12

ดังนั้นฉันค่อนข้างใหม่สำหรับ Linux และเพิ่งติดตั้ง Fedora 19 บนเน็ตบุ๊กของฉัน ฉันต้องการจะมีความเข้าใจที่ลึกซึ้งของลินุกซ์และ CLI ดังนั้นตอนนี้ผมอ่านเรียนรู้ Linux: วิธี

ในแบบฝึกหัด 3 ผู้เขียนให้คำสั่งต่อไปนี้:

  • ls -al
  • แมว. โปรไฟล์

ฉันพยายามทำตามคำแนะนำเหล่านี้ แต่ไม่มีประโยชน์ ไม่มีไฟล์. profile ในไดเรกทอรีชื่อผู้ใช้ของฉันตามที่ฉันเห็นได้จาก ls -al จากสิ่งที่ฉันได้เรียนรู้ไฟล์. bash_profile และ. profile นั้นเหมือนกันทุกประการ ข้อแตกต่างเดียวที่ฉันได้ข้อสรุปจากการวิจัยของฉันคือ. bash_profile ได้รับการตรวจสอบก่อน

สิ่งที่ฉันไม่เข้าใจคือเพราะเหตุใดจึงมีหลายไฟล์สำหรับฟังก์ชันเดียวกันใน Linux เหตุใดผู้เขียนจึงใช้. profile และไม่. bash_profile (ถ้าฉันเข้าใจอย่างถูกต้อง. profile จะไม่อ่านเมื่อระบบค้นหา. bash_profile ก่อน) และทำไมฉันถึงไม่มีไฟล์. profile บนระบบของฉัน


ดูunix.stackexchange.com/questions/45684/ซึ่งตอบคำถามของคุณบางส่วน นอกจากนี้unix.stackexchange.com/questions/67940/…แสดงเหตุผลอย่างหนึ่งว่าทำไมไฟล์ต่างๆเหล่านี้อาจทำให้เกิดความสับสนสำหรับสิ่งที่ก้าวหน้ากว่าที่คุณอาจเกี่ยวข้อง
msw

คำตอบ:


13

วันที่กลับไปบอร์นเชลล์เดิมรู้จักกันในชื่อ.profile shเนื่องจากเชลล์ GNU bashคือ (ขึ้นอยู่กับตัวเลือก) เซ็ตย่อยของเชลล์เป้าหมายเชลล์ทั้งสองจึงสามารถใช้ไฟล์เริ่มต้นเดียวกันได้ นั่นคือโดยมีเงื่อนไขว่าshจะใส่คำสั่งเท่านั้น.profile

ยกตัวอย่างเช่นaliasเป็นที่ถูกต้องในตัวคำสั่งของแต่ไม่รู้จักกับbash shดังนั้นหากคุณมีเพียง.profileไดเรกทอรีในบ้านของคุณและใส่aliasคำสั่งในนั้นshจะบ่น ดังนั้นจึงมีไฟล์เฉพาะทุบตีที่มีคำสั่งเริ่มต้นเปลือกซึ่งทุบตีจะอ่านถ้าหากไม่มี.profileไฟล์อยู่

จริง ๆ แล้วมันเป็นเรื่องเล็กน้อยในการติดตั้งบางอย่างและฉันไม่คุ้นเคยกับ Fedora ภายใต้ bash /etc/profileอ่านโดยเชลล์ก่อนไฟล์ใด ๆ ในโฮมไดเร็กทอรีของคุณ หากมีสคริปต์การเริ่มต้นระบบอย่างกว้าง ๆ มักจะพูดว่าคล้าย

if there is a $HOME/.profile:
   source it
elseif bash is my shell and there is a $HOME/.bash_profile:
   source that

ทำไมเป็นอย่างนั้น? ความพยายามในการใช้งานร่วมกันได้หลายทศวรรษของเชลล์ภาษา ทำไมการสอนถึงเขียนด้วยวิธีนี้ เชลล์บอร์นมักไม่ค่อยได้ใช้กันมากนักและบางคนก็ไม่รู้ด้วยซ้ำว่าบอร์นเชลล์นั้นมีอะไรมากกว่าบอช แม้ว่าจะมีการใช้ไวยากรณ์ Bourne (จำกัด ) เพื่อความเข้ากันได้ข้ามแพลตฟอร์มมากขึ้น แต่ก็มักจะถูกเรียกใช้dashหรือทุบตีในโหมดความเข้ากันได้ POSIX อันที่จริงแหล่งที่มาของบอร์นเชลล์นั้นน่าจะเป็นองค์ประกอบลิขสิทธิ์ของ Unix System V ซึ่งดูเหมือนจะเป็นทรัพย์สินของโนเวลล์ในตอนนี้แต่ฉันก็ไม่รู้ว่ามันจะทำอะไรกับมัน

สำหรับผู้เริ่มต้นใช้อย่างใดอย่างหนึ่ง$HOME/.profileหรือ$HOME/.bash_profileไม่ทั้งคู่และคุณจะไม่เป็นไร เนื่องจากคุณได้.bash_profileทำงานกับมันแล้วเพราะมันอาจมีสิ่งเฉพาะของระบบที่คุณต้องการติดตั้ง


ขอบคุณ! ฉันคิดว่าฉันเข้าใจดีขึ้นเล็กน้อยตอนนี้ยังมีอีกมากที่จะเรียนรู้ว่าฉันเดา
Emiroe

ส่วนมากเป็นขยะประวัติศาสตร์ที่คุณไม่จำเป็นต้องรู้ เพียงแค่ให้ความสนใจกับย่อหน้าสุดท้ายของคำตอบของฉัน นอกจากนี้เนื่องจากคุณยังใหม่ที่นี่คุณสามารถโหวตขึ้นและยอมรับคำตอบซึ่งเป็นรูปแบบที่ดีที่สุดของการขอบคุณรอบที่นี่
msw

ใช่ฉันยอมรับคำตอบของคุณแล้ว ฉันไม่ได้คาดหวังว่าใครซักคนจะพยายามอย่างมากดังนั้นฉันจึงรู้สึกขอบคุณมาก ฉันยอมรับคำตอบของคุณ แต่ฉันไม่สามารถลงคะแนนได้เพราะต้องมี 15 ชื่อเสียงและฉันมีเพียง 8 เท่านั้นขออภัยด้วย!
Emiroe

ฉันลืมข้อ จำกัด 15 ข้อ; ใช่คุณ
msw

4
โบนัสประวัติ # 1 : เชลล์เป้าหมายที่แท้จริงได้หลบหนีจากการถูกจองจำ minnie.tuhs.orgมีซอร์สโค้ดเต็มรูปแบบของ V7 (ยูนิกซ์รุ่นแรกที่มี Bourne shell) และheirloom.sourceforge.netมี Bourne shell รุ่นที่ใหม่กว่าเล็กน้อยซึ่งยังคงใช้งานได้จริง โบนัสประวัติ # 2 : aliasเป็นสิ่งจำเป็นโดย POSIX ดังนั้นจึงมีไม่มากshที่ไม่รู้เกี่ยวกับมัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.