Bash script: อนุญาตให้เปลี่ยนแปลง“ environment / identity”


0

ฉันเจอปัญหานี้หลายครั้งแล้วและฉันต้องการหาวิธีอัตโนมัติ / สคริปต์สิ่งนี้ที่เกี่ยวข้องกับการเปลี่ยนแปลงของข้อมูลประจำตัวหรือสภาพแวดล้อม (ฉันไม่แน่ใจว่าจะเรียกสิ่งนั้นอย่างแม่นยำได้อย่างไร)

suตัวอย่างง่ายจะเป็นสคริปต์ที่ส่วนหนึ่งจะต้องมีการดำเนินการกับ ( make installเช่น) sudoเพื่อให้บรรลุนี้สามารถใช้ อย่างไรก็ตามมีการเปลี่ยนแปลงสภาพแวดล้อมอื่น ๆ ที่ไม่มีทางออกเช่น อาจเป็นที่รู้จักกันดีคือ python virtualenv ที่ใคร ๆ ก็สามารถจินตนาการถึงสคริปต์ได้อย่างง่ายดาย

source virtEnv/bin/activate
python myScript.py

screenหรือเพียงแค่สคริปต์ที่จะเรียก ตอนนี้ฉันกำลังรวบรวม gstreamer ซึ่งฉันต้องการจะทำให้เป็นอัตโนมัติในสคริปต์เพราะฉันจะต้องใช้การติดตั้งนี้ในคอมพิวเตอร์เครื่องอื่น ๆ ในภายหลัง

for i in gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-python gnonlin gst-ffmpeg 
do
   gst-head
   cd ./$i
   git checkout tags/1.1.1
   ./autogen.sh
   make -j7
   exit
done

ที่ไหนgst-headเป็นgst-uninstalledสคริปต์ที่โหลด pkg_config ท้องถิ่น (ถ้าผมขวา) และทำให้ฉันในสภาพแวดล้อมที่แยกต่างหาก ถ้าฉันใส่มันลงในสคริปต์สคริปต์จะหยุดการทำงานที่นั่นและดำเนินการต่อเมื่อฉันทำexitจากสภาพแวดล้อมนั้น


ฉันไม่แน่ใจว่าปัญหาของคุณที่นี่คืออะไร คือการmakeไม่ดำเนินการ? สิ่งที่ไม่ทำงานในสคริปต์ที่คุณโพสต์?
terdon

คำตอบ:


0

"สภาพแวดล้อม" ที่ซึ่งสคริปต์ "ทำให้คุณ" เป็นตัวอย่างใหม่ของเชลล์ของคุณ และแทนที่จะเรียก gst-head โดยไม่มีพารามิเตอร์คุณควรส่งคำสั่งเป็นอาร์กิวเมนต์! คุณเห็นส่วนนี้ในสคริปต์หรือไม่

# if we got a command, run it, else start a shell
if test ! -z "$1";
then
  $@
  exit $?
fi

ฉันคิดว่าคุณควรใช้ประโยชน์จากมัน BTW ถ้าคุณต้องการเริ่มเชลล์ด้วยค่าใช้จ่ายทั้งหมดคุณจะไม่สามารถโต้ตอบกับมันได้จนกว่าคุณจะใช้งานในบางวิธี (ไม่ว่าจะเป็นสคริปต์แบบสแตนด์อโลนหรือฝังลงในเชลล์สคริปต์)

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