ตัวแปรสภาพแวดล้อมจาก .bashrc ไม่ได้ถูกโหลดเมื่อมาจากสคริปต์ Terraform

ฉันมีสคริปต์ที่ทำงานด้วย Terraform บนอินสแตนซ์ EC2 ดังนี้:

provisioner "remote-exec" {
  inline = [
    "bash /path/to/myscript.sh
  ]
}

ฉันมีตัวแปรสภาพแวดล้อมบางตัวที่กำหนดไว้ใน .bashrc ของอินสแตนซ์นี้ ซึ่งฉันต้องการให้สคริปต์นี้เข้าถึงได้ อย่างไรก็ตาม ภายในสคริปต์นั้น ฉันใส่ไว้

source ~/.bashrc

เป็นบรรทัดแรก แต่ตัวแปรที่กำหนดใน .bashrc ยังไม่ได้ตั้งค่า

ฉันต้องทำอย่างไรเพื่อให้ได้แหล่งที่มา .bashrc ได้สำเร็จ


person Davis Yoshida    schedule 06.10.2016    source แหล่งที่มา
comment
.bashrc ของคุณมีบางอย่างเช่น [ -z "$PS1" ] && return # If not running interactively, don't do anything หรือไม่   -  person anishsane    schedule 06.10.2016
comment
มีบางสิ่งที่คล้ายกันอยู่ที่นั่นจริงๆ ขอบคุณ! หากคุณต้องการให้เป็นคำตอบฉันก็จะยอมรับมัน   -  person Davis Yoshida    schedule 06.10.2016


คำตอบ (1)


หลายครั้งที่ ~/.bashrc มีการตรวจสอบเพื่อให้แน่ใจว่าการตั้งค่าจะใช้เฉพาะในสภาพแวดล้อมแบบโต้ตอบเท่านั้น อย่างน้อยการตรวจสอบนี้จะปรากฏเป็นค่าเริ่มต้นใน Ubuntu

# If not running interactively, don't do anything
[ -z "$PS1" ] && return

ภายในสคริปต์ คุณจะไม่มีการตั้งค่า PS1

ดังนั้น ให้ลบ/แสดงความคิดเห็นบรรทัดนั้นออกจาก ~/.bashrc;

หรือแหล่งที่มาของสคริปต์เช่นนี้:

PS1=non-empty source ~/.bashrc
person anishsane    schedule 06.10.2016