เมื่อตั้งค่าตัวแปร.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
จะแสดง "พร้อมการส่งออก"