บรรทัดเส้นทางการส่งออกใน. bashrc ทำอะไร


9

ฉันไม่ได้เป็นเช่นนั้นใน Linux และฉันมีข้อสงสัยดังต่อไปนี้การกวดวิชา

ฉันต้องแก้ไขbashrcไฟล์ ไฟล์นี้มีการตั้งค่าชนิดใดบ้าง? ฉันคิดว่าสิ่งที่เกี่ยวข้องกับสภาพแวดล้อมเปลือก bash แต่ฉันไม่แน่ใจเกี่ยวกับมัน

ฉันต้องแทรกบรรทัดนี้:

export PATH=$HOME/.local/bin:$HOME/.local/usr/bin:$PATH

บรรทัดนี้ทำอะไรกันแน่

ฉันคิดว่าexportคำสั่งนั้นถูกใช้เพื่อสร้างตัวแปรใหม่ที่พร้อมใช้งานสำหรับโปรแกรมอื่น

แต่สายนี้ทำอะไรกันแน่ คือPATHชื่อของตัวแปรที่ฉันกำหนด? คือ$HOMEอะไร

สิ่งที่หมายถึง:สัญลักษณ์ระหว่างPATH=$HOME/.local/binและ$HOME/.local/usr/binและ$PATHส่วนในการแสดงออกของก่อนหน้านี้หรือไม่?

การแสดงออกนี้หมายความว่าอะไร?


กระบวนการ: ระหว่างรายการเป็นตัวคั่นสำหรับแต่ละเซ็กเมนต์ ไม่ว่าเส้นทางของคุณจะเป็นหนึ่งในการทำงานอย่างต่อเนื่องและจะไม่ทำงาน
Terrance

ใน Ubuntu ชนิดของPATHการปรับเปลี่ยนจะทำอยู่แล้วใน~/.profileไฟล์เพื่อให้มันเป็นความไม่สอดคล้องกันเล็ก ๆ น้อย ๆ ~/.bashrcที่จะทำสิ่งที่คล้ายกันใน IMO ที่ดีกว่าในการแก้ไขโค้ดใน~/.profileถ้าจำเป็น ปัจจุบัน~/.profileไฟล์เริ่มต้นรวมถึงบรรทัดนี้:PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Gunnar Hjalmarsson

@GunnarHjalmarsson: มีบางสถานการณ์ที่ทำให้. profile และ. bashrc แตกต่างกัน ไฟล์. profile ถูกวิเคราะห์คำโดยเชลล์ล็อกอินและไม่ใช่โดยเชลล์ย่อย แต่เนื่องจากคุณจำเป็นต้องเข้าสู่ระบบเพื่อเริ่ม subshell สิ่งนี้ก็ใช้ได้เนื่องจาก subshell จะรับ $ PATH ไฟล์. bashrc จะไม่ถูกแยกวิเคราะห์โดยเชลล์ล็อกอิน แต่จะถูกวิเคราะห์โดยเชลล์ย่อย ความแตกต่างเกิดขึ้นเมื่อคุณมีบางสิ่งที่ไม่ใช่ลูกของล็อกอินเชลล์ (อาจเป็นสคริปต์อัตโนมัติแบบแฟนซีที่เรียกใช้สคริปต์อื่น ๆ เช่น git commit hook) - สิ่งใดใน. profile จะไม่สามารถอ่านได้ดังนั้นจะถูกละเว้น
slebetman

@slebetman: ขวาและในกรณีของสก์ท็อปมีความแตกต่างอื่นที่คุณไม่พูดถึง: แตกต่าง~/.bashrc, ~/.profileมีที่มาโดยผู้จัดการการแสดงผลเท่านั้นดังนั้นตัวแปรที่กำหนดโดย~/.profileมีอยู่เมื่อคุณเริ่มโปรแกรมจากสภาพแวดล้อมแบบกราฟิก และสิ่งนี้เกิดขึ้นก่อนดังนั้นจึงควรใช้กระบวนการที่เริ่มต้นโดยอัตโนมัติสำหรับเซสชัน
Gunnar Hjalmarsson

คำตอบ:


16

เพื่อสรุปทุกอย่างที่กล่าวถึงในคำถามนี้

exportส่วนหนึ่ง

exportบรรทัดหมายความว่าตัวแปรที่คุณประกาศหลังจากที่มันจะสามารถเข้าถึงกระบวนการที่เด็ก กล่าวอีกนัยหนึ่งกระบวนการจะสามารถเข้าถึงตัวแปรที่ประกาศหลังจากexportคีย์เวิร์ดผ่านสภาวะแวดล้อมของเชลล์ ดังนั้นถ้าคุณไม่ได้ทำสิ่งที่ชอบexport FOO="BAR"แล้วมาเปลี่ยนแปลงในสภาพแวดล้อมเปลือกของคุณคุณสามารถพิมพ์และได้รับ$FOOBAR

PATHส่วนหนึ่ง

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

$HOMEในPATHตัวแปร

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

:ในระหว่างเส้นทางทั้ง

:เทียบเท่ากับเครื่องหมายจุลภาคในประโยค มันแยกสามไดเรกทอรี หากไม่มีสามไดเรกทอรีคอนโซลจะไม่จดจำคำสั่งที่ได้รับ สถานที่ทั้งสามนั้นเป็นสามไดเรกทอรีที่ใช้กันมากที่สุดสำหรับไฟล์สคริปต์ / คำสั่งที่จะเก็บไว้และเทอร์มินัลควรเข้าถึงได้โดยไม่ต้องเขียนเส้นทางแบบเต็มไปยังไฟล์


คำตอบที่ดี! "บรรทัดการส่งออกหมายความว่าตัวแปรที่คุณประกาศหลังจากนั้นจะสามารถเข้าถึงได้กับกระบวนการลูก" เป็นหลักสำหรับเด็กเหล่านี้ประมวลผลขั้วจากที่ฉันจะเรียกใช้คำสั่งหรือไม่?
vadasambar

5

PATHตัวแปรช่วยทุบตีรู้ที่จะมองหาโปรแกรมปฏิบัติการดังนั้นหากคุณมีสคริปต์หรือบางแฟ้มที่ปฏิบัติการอื่น ๆ ใน$HOME/.local/binการปรับเปลี่ยนPATHจะช่วยให้คุณพิมพ์และเรียกใช้ไฟล์ที่เช่นเดียวกับที่คุณทำกับหรือlsdf

exportหมายถึงการทำให้PATHตัวแปรนั้นพร้อมใช้งานสำหรับโปรแกรมอื่น ๆ ที่คุณเรียกใช้จากการทุบตีเท่านั้น

สำหรับ: มันเป็นเพียงตัวคั่นสำหรับแต่ละไดเรกทอรี มันเหมือนกับเครื่องหมายจุลภาคในรายการคำไม่มีอะไรเพิ่มเติม

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