باش میں PATH کیسے کام کرتا ہے؟

How Does Path Work Bash



جب آپ لینکس ٹرمینل میں کمانڈ ٹائپ کر رہے ہوتے ہیں ، تو آپ عام طور پر کسی خاص کام کے لیے کسی پروگرام کو کال کر رہے ہوتے ہیں ، مثال کے طور پر ، ایل ایس ، سی ڈی ، rm ، mkdir ، وغیرہ یہ تمام پروگرام فائل سسٹم میں کہیں واقع ہیں ، ٹھیک ہے؟ بش کو کیسے پتہ چلتا ہے کہ یہ پروگرام کہاں ہیں؟

یہاں ماحولیاتی متغیرات کھیل میں آتے ہیں ، خاص طور پر PATH متغیر۔ یہ متغیر bash کو بتانے کے لئے ذمہ دار ہے کہ ان پروگراموں کو کہاں دیکھنا ہے۔ آئیے چیک کریں کہ PATH کیسے کام کرتا ہے اور PATH کو کیسے دیکھتا/تبدیل کرتا ہے۔







ماحولیاتی متغیر اور $ PATH۔

شیل ٹرمینالوجی میں ، ماحول ایک ایسا علاقہ ہے جسے ہر بار جب سیشن شروع ہوتا ہے تو شیل بناتا ہے۔ ماحول کو سنبھالنے کے لیے ، ماحول کے متغیرات ہیں جو ماحول کے مختلف حصوں کو ظاہر کرتے ہیں۔ متغیر کی قیمت سٹرنگ ، ڈائریکٹری لوکیشن ، ویلیو یا دیگر ہوسکتی ہے۔



PATH ایک ایسا ماحولیاتی متغیر ہے جو کچھ ڈائریکٹریوں کا ٹریک رکھتا ہے۔ بطور ڈیفالٹ ، PATH متغیر مندرجہ ذیل مقامات پر مشتمل ہے۔



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /am
  • /sbin
  • /سنیپ/بن (اگر سنیپ انسٹال ہے)

دیکھنا چاہتے ہیں کہ فی الحال PATH کے تحت کون سی ڈائریکٹریز رجسٹرڈ ہیں؟ ٹرمینل کو آگ لگائیں اور درج ذیل کمانڈ کو چلائیں۔





$باہر پھینک دیا $ پاتھ۔

یہاں ، $ نشان ایک متغیر کو ظاہر کرنا ہے۔ کی باہر پھینک دیا کمانڈ PATH متغیر کی قیمت پرنٹ کرتا ہے۔



اب ، یہ مخصوص ماحول کا متغیر اتنا اہم کیوں ہے؟ اس کی وجہ یہ ہے کہ شیل اور مجموعی طور پر سسٹم اس کے ساتھ کیسا سلوک کرتا ہے۔ PATH متغیر اسٹورز جہاں قابل عمل مل سکتے ہیں۔ جب بھی کوئی کمانڈ چلائی جاتی ہے ، شیل PATH ڈائریکٹریز کو ٹارگٹ ایگزیکیوٹیبل فائل کے لیے دیکھتا ہے اور اسے چلاتا ہے۔

مثال کے طور پر ، آئیے کے ساتھ ٹیسٹ کرتے ہیں۔ باہر پھینک دیا کمانڈ. یہاں ، میں ایکو کمانڈ چلا رہا ہوں۔

$باہر پھینک دیاہیلو ورلڈ۔!

قابل عمل فائل کہاں ہے۔ باہر پھینک دیا ؟ جاننے کے لیے اگلی کمانڈ چلائیں۔

$کونسا باہر پھینک دیا

جیسا کہ ہم دیکھ سکتے ہیں ، باہر پھینک دیا قابل عمل/usr/bin/echo پر واقع ہے۔ کہاں واقع ہے؟ آئیے معلوم کریں۔

$کونسا کونسا

یہ/usr/bin/جس پر واقع ہے۔ زیادہ تر کمانڈ ٹولز /usr /bin ڈائریکٹری کے تحت واقع ہیں۔ یہاں ، bash کمانڈ کے قابل عمل (ے) کو تلاش کرنے کے لیے مقامات کے لیے PATH سے مشورہ کر رہا ہے۔

PATH میں ترمیم

اس سے پہلے کہ ہم PATH کی قدر میں ترمیم کریں ، اس کی ساخت کو سمجھنا ضروری ہے۔ PATH کی قیمت چیک کرنے کے لیے دوبارہ کمانڈ چلائیں۔

$باہر پھینک دیا $ پاتھ۔

نوٹ کریں کہ ہر ڈائریکٹری a: sign سے الگ ہوتی ہے۔

PATH میں ڈائریکٹری شامل کرنا۔

PATH میں کسٹم ڈائرکٹری شامل کرنے کے لیے ، ہم bashrc فائل کی مدد لیں گے۔ یہ ایک خاص باش سکرپٹ ہے جو ہر بار نیا باش سیشن شروع ہونے پر بیش لوڈ ہوتا ہے۔ نوٹ کریں کہ bashrc فائل لینکس سسٹم کے ہر صارف کے لیے منفرد ہے۔

bashrc فائل کو ٹیکسٹ ایڈیٹر میں کھولیں۔ اگر bashrc فائل پہلے سے موجود نہیں ہے ، تو ایڈیٹر اسے خود بخود تخلیق کرے گا۔

$میں آیا۔/.bashrc

یہاں ، یہ ڈیفالٹ بشرک ہے جو اوبنٹو کے ساتھ آتا ہے۔ فائل کے آخری حصے پر جائیں (اگر یہ موجود ہے) اور درج ذیل لائن شامل کریں۔

$برآمد راستہ='$ پاتھ۔: / '

یہاں ، PATH متغیر کی نئی قدر پرانی متغیر کے ساتھ نئی ڈائریکٹری جو ہم نے ابھی شامل کی ہے۔

فائل کو محفوظ کریں اور بش کو دوبارہ لوڈ کرنے کو کہیں۔

$ذریعہ۔/.bashrc

آئیے تصدیق کریں کہ نیا راستہ کامیابی کے ساتھ شامل کیا گیا تھا۔

$باہر پھینک دیا $ پاتھ۔

ووئلا! PATH کامیابی کے ساتھ اپ ڈیٹ ہوا! اب ، bash عملدرآمد کے لیے نیا راستہ بھی تلاش کرے گا۔ میرے پاس پہلے سے سکرپٹ ہے۔ demo.sh ڈیسک ٹاپ پر. آئیے دیکھتے ہیں کہ آیا بش اسے صحیح جگہ بتائے بغیر کال کر سکتا ہے۔

$demo.sh

ہاں ، بش بغیر کسی پریشانی کے اسے براہ راست کال کر سکتا ہے۔

PATH سے ڈائریکٹری ہٹائی جا رہی ہے۔

PATH سے ڈائریکٹریوں کو شامل کرنے/ہٹانے کا کوئی سیدھا راستہ نہیں ہے۔ مجھے وضاحت کا موقع دیں.

PATH کی قدر دراصل طے شدہ ہے۔ پھر ، bashrc چال کا کیا ہوگا؟ بشریک ایک باش اسکرپٹ ہے جو ہر بار سیشن شروع ہونے پر بیش لوڈ کرتا ہے۔ bashrc میں ، ہم نے ابھی اعلان کیا ہے کہ PATH کی نئی قیمت اس کی ڈیفالٹ ویلیو اور صارف کی مقرر کردہ ڈائریکٹری ہوگی۔ اب ، جب بھی bash لوڈ ہوتا ہے ، یہ دیکھتا ہے کہ bashrc PATH کی ایک نئی قیمت تفویض کرنے کو کہہ رہا ہے اور یہی کرتا ہے۔

اسی طرح ، اگر ہم PATH سے ڈائریکٹری کو ہٹانا چاہتے ہیں تو ہمیں bashrc میں PATH کی ایک مختلف ویلیو دوبارہ تفویض کرنی ہوگی تاکہ ہر بار جب bash شروع ہوتا ہے تو یہ ترمیم شدہ ویلیو استعمال کرتا ہے۔

آئیے اس مثال پر ایک نظر ڈالیں۔ میں ڈائریکٹری remove/ڈیسک ٹاپ کو PATH سے ہٹانے کو تیار ہوں۔

$باہر پھینک دیا $ پاتھ۔ | sed -اور s/: ~ /ڈیسک ٹاپ $ // '

اگر ڈائریکٹری/home/wrong/dir ہوگی تو کمانڈ اس طرح نظر آئے گی۔

$باہر پھینک دیا $ پاتھ۔ | sed -اور s/: /home wrong/wrong /dir $ // '

یہاں ، دلچسپ حصہ سیڈ ٹول ہے۔ sed کے بارے میں مزید جانیں۔ یہاں اور یہاں . لمبی کہانی مختصر ، سیڈ کا استعمال کرتے ہوئے ، ہم آؤٹ پٹ میں ترمیم کر رہے ہیں۔ باہر پھینک دیا کمانڈ. اب ، ہم اس ترمیم شدہ آؤٹ پٹ کو PATH کی قدر کو تبدیل کرنے کے لیے استعمال کر سکتے ہیں۔

bashrc کو ٹیکسٹ ایڈیٹر میں کھولیں اور درج ذیل لائنیں شامل کریں۔ میں جان بوجھ کر پچھلی لائنیں رکھ رہا ہوں تاکہ یہ ثابت ہو کہ یہ کام کر رہا ہے۔

$برآمد راستہ='$ (بازگشت $ PATH | sed -e 's/: ~ ~ /ڈیسک ٹاپ $ //')'

متبادل کے طور پر ، آپ دستی طور پر PATH کی قدر بھی مقرر کر سکتے ہیں۔ یہ ایک محنت طلب عمل ہے لیکن زیادہ سیدھا اور آسان ہے۔

$برآمد راستہ=/usr/مقامی/sbin:/usr/مقامی/ہوں:/usr/sbin:/usr/ہوں:/sbin:/ہوں:
/usr/کھیل:/usr/مقامی/کھیل:/اچانک/ہوں

یہاں ، کمانڈ کی قیمت PATH کو تفویض کی جائے گی۔ فائل کو محفوظ کریں اور bashrc کو دوبارہ لوڈ کریں۔

$ذریعہ۔/.bashrc

آئیے نتیجہ کی تصدیق کریں۔

$باہر پھینک دیا $ پاتھ۔

PATH ویلیو اپ ڈیٹ ہو گئی ہے!

حتمی خیالات۔

بش میں ، PATH متغیر ایک اہم ہے۔ کوئی بھی پروگرام جو باش سیشن کے ذریعے چلتا ہے وہ متغیر کو وارث کرتا ہے ، لہذا یہ ضروری ہے کہ PATH میں صرف ضروری ڈائریکٹریز شامل ہوں۔ مزید ڈائرکٹری شامل کرنے سے سسٹم میں صرف فالتو پن کا اضافہ ہوگا۔

بش کے لیے تمام ماحولیاتی متغیرات دیکھنے کے لیے ، یہ کمانڈ چلائیں۔ پہلا کمانڈ حصہ ماحول کے تمام متغیرات کو لوٹائے گا اور دوسرا حصہ آؤٹ پٹ کو بڑھتے ہوئے ترتیب سے ترتیب دے گا۔

$env | ترتیب دیں

اپنے باش کے تجربے میں اضافہ کرنا چاہتے ہیں؟ باش عرفی چیزوں کو تیز کرنے اور تیز کرنے کا ایک انوکھا طریقہ پیش کرتے ہیں۔ بش عرف کے بارے میں مزید جانیں۔ .

لطف اٹھائیں!