.Bashrc এ রফতানি ব্যবহার করা হচ্ছে


45

আমি আমার লক্ষ্য করেছি .bashrcযে কিছু লাইন exportতাদের সামনে রয়েছে যেমন

export HISTTIMEFORMAT="%b-%d  %H:%M  "
...
export MYSQL_HISTFILE="/root/.mysql_history"

অন্যরা যেমন না, যেমন

HISTSIZE=100000

আমি, প্রথম, এই সঠিক অবাক হচ্ছি, এবং দ্বিতীয় কি নিয়ম ব্যবহার করার জন্য নয় exportমধ্যে .bashrc

উত্তর:


53

আপনার কেবল exportশ্যাবেলে চালু হওয়া অন্যান্য প্রোগ্রামগুলির দ্বারা কেবল "দেখা" হওয়া উচিত, যখন কেবল শেলের ভিতরেই ব্যবহৃত হয় সেগুলি exportসম্পাদনের দরকার হয় না ।

ম্যান পেজ এটাই বলে:

The  supplied  names are marked for automatic export to the environ‐
ment of subsequently executed commands.  If the -f option is  given,
the  names  refer to functions.  If no names are given, or if the -p
option is supplied, a list of all names that are  exported  in  this
shell  is  printed.   The -n option causes the export property to be
removed from each name.  If a variable name is  followed  by  =word,
the  value  of  the variable is set to word.  export returns an exit
status of 0 unless an invalid option  is  encountered,  one  of  the
names  is  not a valid shell variable name, or -f is supplied with a
name that is not a function.

এটি নিম্নলিখিত দ্বারা প্রদর্শিত হতে পারে:

$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh

$ export MYVAR="value-exported"
$ ./echo.sh
value-exported

ব্যাখ্যা:

  • আমি প্রথমে ${MYVAR}একটি শেল ভেরিয়েবল হতে সেট করেছি MYVAR="value"echoআমি ব্যবহার করে এর মান প্রতিধ্বনিত করতে পারি কারণ প্রতিধ্বনি শেলের একটি অংশ।
  • তারপর আমি তৈরি echo.sh। এটি একটি ছোট স্ক্রিপ্ট যা মূলত একই রকম হয়, এটি কেবল প্রতিধ্বনিত হয় ${MYVAR}, তবে পার্থক্যটি এটি একটি পৃথক প্রক্রিয়াতে চলবে কারণ এটি একটি পৃথক স্ক্রিপ্ট।
  • echo.shএটিকে কল করার সময় কোনও ফলাফল নেই, কারণ নতুন প্রক্রিয়া উত্তরাধিকার সূত্রে আসে না${MYVAR}
  • তারপরে আমি কীওয়ার্ড ${MYVAR}দিয়ে আমার পরিবেশে রফতানি করিexport
  • আমি এখন echo.shআবার এটি চালানোর সময় , এটি ${MYVAR}পরিবেশের কাছ থেকে পেয়ে যায় বলে এর সামগ্রীর প্রতিধ্বনি দেয়

সুতরাং আপনার প্রশ্নের উত্তর দিতে:

এটি নির্ভর করে যেখানে কোনও ভেরিয়েবল ব্যবহার করা হবে, আপনাকে এটি রফতানি করতে হবে কি না।


17

পরিবেশের ভেরিয়েবলেরexport জন্য ব্যবহার করুন । পরিবেশের ভেরিয়েবলগুলি একটি অপারেটিং সিস্টেম বৈশিষ্ট্য। পরিবেশের ভেরিয়েবলগুলি শিশু প্রক্রিয়াগুলির দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হয়: আপনি যদি এগুলিকে শেলের মধ্যে সেট করেন তবে এই শেলটি দিয়ে শুরু করা সমস্ত প্রোগ্রামে সেগুলি উপলব্ধ। বহু অ্যাপ্লিকেশন দ্বারা বা শেল ব্যতীত নির্দিষ্ট অ্যাপ্লিকেশন দ্বারা ব্যবহৃত ভেরিয়েবলগুলি পরিবেশগত পরিবর্তনশীল। সাধারণ পরিবেশের পরিবর্তনশীলগুলির কয়েকটি উদাহরণ এখানে রয়েছে:

  • HOME- ব্যবহারকারীর হোম ডিরেক্টরি নির্দেশ করে যা প্রতি ব্যবহারকারী কনফিগারেশন ফাইলগুলি অবস্থিত। প্রতি ব্যবহারকারীর কনফিগারেশন ফাইলগুলি পড়তে বা অন্যথায় ব্যবহারকারীর হোম ডিরেক্টরিটির অবস্থান জানা দরকার এমন কোনও প্রোগ্রাম দ্বারা ব্যবহৃত।
  • PATH- অন্যান্য প্রোগ্রাম চালু করার জন্য নির্বাহযোগ্য ফাইলগুলি কোথায় পাবেন তা নির্দেশ করে। প্রতিটি প্রোগ্রাম যা অন্য প্রোগ্রাম শুরু করা প্রয়োজন দ্বারা ব্যবহৃত।
  • LD_LIBRARY_PATH- ডায়নামিক লাইব্রেরি ফাইলগুলি কোথায় সন্ধান করতে হবে তা নির্দেশ করে। প্রতিটি গতিযুক্ত সংযুক্ত এক্সিকিউটেবল দ্বারা ব্যবহৃত।
  • EDITOR, VISUAL- নির্দেশক যখন কোন সম্পাদক দরকার হয় তখন কোন প্রোগ্রামটি চালানো উচিত। কোনও পাঠ্য সম্পাদক চালু করার দরকার আছে এমন কোনও প্রোগ্রাম দ্বারা ব্যবহৃত।
  • DISPLAY, XAUTHORITY- X11 সার্ভারের সাথে কীভাবে সংযোগ স্থাপন করবেন তা নির্দেশ করে। এক্স 11 ক্লায়েন্ট (যেমন জিইউআই প্রোগ্রাম) দ্বারা ব্যবহৃত।
  • LESS- lessচালানো হলে বিকল্পগুলি স্বয়ংক্রিয়ভাবে চালু হয় । দ্বারা ব্যবহৃত less
  • http_proxy- ওয়েব প্রক্সিটি ব্যবহারের জন্য নির্দেশ করে। বেশিরভাগ ওয়েব ব্রাউজার দ্বারা ব্যবহৃত।

exportশেল ভেরিয়েবলের জন্য ব্যবহার করবেন না । শেল ভেরিয়েবলগুলি প্রোগ্রামিং ভাষা হিসাবে শেলের একটি বৈশিষ্ট্য। শেল ভেরিয়েবলগুলি কেবল শেলের ভিতরেই ব্যবহৃত হয় যেখানে সেগুলি সেট করা থাকে; শেল দ্বারা চালিত প্রোগ্রামগুলির তাদের কোনও অর্থ নেই। শেল স্থিতির বাকী অংশের মতো সাবসেল তৈরি করা হলে শেল ভেরিয়েবলগুলি সদৃশ হয়। শেল ভেরিয়েবলের কয়েকটি উদাহরণ এখানে রয়েছে যা জনপ্রিয় শেলগুলির একটি অর্থ রয়েছে:

  • PS1 - প্রতিটি কমান্ডের আগে প্রদর্শিত হবে।
  • IFS - অক্ষরগুলি যা শব্দের পৃথকীকরণযোগ্য ভেরিয়েবল বিস্তৃতকরণ এবং আদেশ আদেশে পৃথক করে।
  • HISTFILE - একটি ফাইল যেখানে শেল কমান্ডের ইতিহাস লিখবে।

শেল দ্বারা ব্যবহৃত ভেরিয়েবলগুলি ছাড়াও, বেশিরভাগ শেল স্ক্রিপ্টগুলি তাদের অভ্যন্তরীণ উদ্দেশ্যে ভেরিয়েবল ব্যবহার করে।

বেশিরভাগ এনভায়রনমেন্ট ভেরিয়েবল (উদাহরণস্বরূপ PATH) পুরো সেশনের জন্য অর্থবোধ করে এবং সেটিকে ~/.profileবা অনুরূপ কোনও ফাইল সেট করা উচিত । ভেরিয়েবলগুলি যা কেবলমাত্র একটি নির্দিষ্ট শেলকে বোঝায় (যেমন PS1) শেল-নির্দিষ্ট ফাইলে যেমন সেট করা উচিত ~/.bashrcবা যেমন ~/.zshrc। দেখুন সমস্ত "শেল" দ্বারা পড়া ".Bashrc" সমতুল্য ফাইল কি আছে?


3

ব্যাশ অভ্যন্তরীণ ভেরিয়েবলগুলির জন্য আপনার প্রয়োজন নেই export। আপনার উদাহরণ থেকে HISTTIMEFORMATব্যাশ নিজে ব্যবহার করা হয় এবং প্রয়োজন নেই রপ্তানি MYSQL_HISTFILEহয় mysqlএবং যে চাহিদা অন্যথায় রপ্তানি mysqlএটি দেখতে নেই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.