วันอังคารที่ 28 กุมภาพันธ์ พ.ศ. 2555

รู้จัก Linux มานาน แต่ไม่เคยรู้จักคำสั่ง "."

ปกติ เวลาสั่งโปรแกรมทำงาน ที่ Command Line ก็จะสั่ง
# ./program_name
 
ประมาณนี้
 
แต่ที่นี้ มันมีคำสั่งบางอย่าง เช่น คำสั่งในการ set shell environment data
ที่มันต้องการ export environment data ออกมาที่ shell command prompt
 
ตัวอย่าง script ชื่อ set_editor.sh
 
#!/bin/bash
export EDITOR=vi
 
พอรัน script ด้วยคำสั่ง
# ./set_editor.sh
 
พอจบ Script แล้ว ตัวแปร EDITOR จะไม่ถูก export มาที่ Command Prompt
เพราะว่าขณะที่มันรันไฟล์นี้ มันสร้าง Shell ขึ้นมาใหม่ ตามบรรทัดแรกของ Script
ฉะนั้น การ Export จึงมีผลแค่ใน Session นั้นเท่านั้น เมื่อ Script จบไป ตัวแปร
ก็จะหายตามไปได้ ไม่ส่งผลต่อ Shell หลักเลย !!
 
วิธีการที่จะ ทำให้ script นั้นส่งผลการ export variable ออกมาที่ shell หลักได้ก็คือ
ต้องสั่งด้วยคำสั่ง "."   ใช่แล้วมันคือคำสั่งจุด มันจะเหมือนกับการสั่งให้ shell หลักทำงาน
โดยไม่มีการสร้าง shell ใหม่ขึ้นมารันคำสั่งดังกล่ว
 
ตัวอย่างการรัน
# . set_editor.sh
 
แบบนี้จะให้ผลตามที่ต้องการ
มันเป็นเรื่องที่ค่อนข้างเบสิกมาก แต่ทำไมกรูไม่รู้ว่ะ???
 
 

ไม่มีความคิดเห็น:

คลังบทความของบล็อก

เกี่ยวกับฉัน

รูปภาพของฉัน
คลองสอง, คลองหลวง, ปทุมธานี, Thailand
ชายหนุ่ม เมียหนึ่ง ลูกชายสาม เลี้ยงชีพด้วยการเขียนซอฟท์แวร์ พัฒนาระบบ