เมื่อตั้งค่าตัวแปร.bashrcฉันควรใช้สิ่งนี้หรือไม่?
export VAR=value
หรือนี่จะเพียงพอหรือไม่
VAR=value
ความแตกต่างคืออะไร (ถ้ามี)
เมื่อตั้งค่าตัวแปร.bashrcฉันควรใช้สิ่งนี้หรือไม่?
export VAR=value
หรือนี่จะเพียงพอหรือไม่
VAR=value
ความแตกต่างคืออะไร (ถ้ามี)
คำตอบ:
export VAR=value
การทำ
VAR=value
ตั้งค่าตัวแปรสำหรับช่วงเวลาของสคริปต์เท่านั้น ( .bashrcในกรณีนี้) กระบวนการลูก (ถ้ามี) ของสคริปต์จะไม่ได้กำหนด VAR และเมื่อออกจากสคริปต์VARแล้ว
export VAR=value
เพิ่มอย่างชัดเจนVARในรายการตัวแปรที่ส่งผ่านไปยังกระบวนการลูก อยากลองไหม เปิดเปลือกทำ
PS1="foo > "
bash --norc
เชลล์ใหม่ได้รับพรอมต์เริ่มต้น ถ้าคุณทำสิ่งที่ชอบแทน
export PS1="foo > "
bash --norc
เชลล์ใหม่จะได้รับพรอมต์ที่คุณเพิ่งตั้ง
ปรับปรุง:เป็นบันทึกเอียน Kelling ด้านล่างตัวแปรตั้งอยู่ในยังคงมีอยู่ในเปลือกที่มา.bashrc .bashrcโดยทั่วไปเมื่อใดก็ตามที่เชลล์ใช้source scriptnameตัวแปรสคริปต์ (โดยใช้คำสั่ง) ที่ตั้งค่าไว้ในสคริปต์จะคงอยู่ตลอดอายุของเชลล์
PS1เป็นตัวอย่างที่ไม่ดีของตัวแปรที่จะส่งออกเป็นตัวแปรสภาพแวดล้อม มันมีความหมายต่อกระบวนการลูกที่เป็นหอยและตีความได้แตกต่างกันโดยเชลล์ที่แตกต่างกัน (เช่นทุบตีและเส้นประ) .bashrcวิธีที่ดีที่สุดคือการตั้งค่าเพียงแค่มันเป็นตัวแปรเปลือกประจำใน ตัวอย่างที่ดีขึ้นของตัวแปรสภาพแวดล้อม ได้แก่HOME, PATH, EDITORฯลฯ
ทั้งคู่ดูเหมือนจะทำงานได้ดี แต่การใช้การส่งออกจะทำให้แน่ใจว่าตัวแปรนั้นพร้อมใช้งานสำหรับ subshells และโปรแกรมอื่น ๆ ลองทดสอบดูสิ
เพิ่มสองบรรทัดเหล่านี้ลงในไฟล์. bashrc ของคุณ
TESTVAR="no export"
export MYTESTVAR="with export"
จากนั้นเปิดเปลือกใหม่
เล่นecho $TESTVARและecho $MYTESTVARจะแสดงเนื้อหาของแต่ละตัวแปร ตอนนี้ภายในเชลล์เดียวกันนั้นลบสองบรรทัดเหล่านั้นออกจากไฟล์. bashrc ของคุณแล้วรันbashเพื่อเริ่มเชลล์ย่อย
การรันecho $TESTVARจะมีเอาต์พุตว่างเปล่า แต่การรันecho $MYTESTVARจะแสดง "พร้อมการส่งออก"