আমি কীভাবে পরিবেশের ভেরিয়েবল যুক্ত করব?


363

আমি উবুন্টু ১১.০৪ চালাচ্ছি। আমি ব্যাশ সেশন শুরু করতে টার্মিনালটি ব্যবহার করি এবং আমি একটি পরিবেশের পরিবর্তনশীল যুক্ত করতে চাই:

$r@hajt:~$ env THEVAR=/example

কিন্তু এটি কাজ করছে না। এটা তোলে THEVAR গত এক হচ্ছে সব ভেরিয়েবল দেখায়, কিন্তু অন্য একটি কলে envপ্রদর্শন করা হয় না THEVARanymore- env | grep THEVARআয় নেই।

একইভাবে, এক্সপোর্ট ( export THEVAR=/example) বা অন্যান্য ভেরিয়েবল অ্যাসাইনমেন্ট ( THEVAR=/example) সহ স্ক্রিপ্টগুলি পরিবেশ পরিবর্তনশীল যুক্ত করে না।

আমি জানি আমি কিছু ভুল করছি, আমি জানি এটি কিছু সাধারণ হওয়া উচিত তবে আমি কী খুঁজে পাচ্ছি না।

আপডেট: আমার প্রশ্নের আসল অর্থটি হ'ল: https://stackoverflow.com

(যাইহোক আমি সর্বাধিক ভোট দেওয়া উত্তর চয়ন করব এবং সম্পাদিত শিরোনামটি ছেড়ে দেব - যা আমি বলছিলাম তা ছিল না)

env পরিবর্তিত পরিবেশে একটি প্রোগ্রাম চালায়, তারপরে সমস্ত পরিবর্তনগুলি বাতিল করে দিন।


1
.Bashrc এ সংজ্ঞায়িত / রফতানি করা হলে এটি সঠিকভাবে কাজ করে।
হাফ


1
কীভাবে THEVAR=/example?
ওলেহ প্রিপিন

2
অন্যটি বিশ্বব্যাপী ভেরিয়েবল সম্পর্কে, এটি এইরকম সীমাবদ্ধতা যুক্ত করে না। আমি এটি আলাদা রাখতাম
লেকেনস্টেইন

উত্তর:


569

কেবলমাত্র বর্তমান শেলের জন্য পরিবর্তনশীল সেট করতে :

VARNAME="my value"

এটি বর্তমান শেলের জন্য সেট করতে এবং বর্তমান শেল থেকে সমস্ত প্রক্রিয়া শুরু হয়েছে:

export VARNAME="my value"      # shorter, less portable version

ভবিষ্যতের সমস্ত বাশ সেশনের জন্য এটি স্থায়ীভাবে সেট করতে .bashrcআপনার $HOMEডিরেক্টরিতে আপনার ফাইলে এমন লাইন যুক্ত করুন ।

এটি স্থায়ীভাবে সেট করতে এবং সিস্টেম প্রশস্ত (সমস্ত ব্যবহারকারী, সমস্ত প্রক্রিয়া) / ইত্যাদি / পরিবেশে সেট ভেরিয়েবল যুক্ত করে:

sudo -H gedit /etc/environment

এই ফাইলটি কেবলমাত্র ভেরিয়েবল অ্যাসাইনমেন্ট গ্রহণ করে:

VARNAME="my value"

exportকীওয়ার্ডটি এখানে ব্যবহার করবেন না ।

আপনার বর্তমান ব্যবহারকারী থেকে লগআউট করতে হবে এবং আবার লগইন করতে হবে যাতে পরিবেশের ভেরিয়েবল পরিবর্তন হয়।


29
Shell config files such as ~/.bashrc, ~/.bash_profile, and ~/.bash_login are often suggested for setting environment variables. While this may work on Bash shells for programs started from the shell, variables set in those files are not available by default to programs started from the graphical environment in a desktop session. help.ubuntu.com
পরিবেশগত

1
@ মিঃ হাইদে হ্যাঁ, সম্ভবত এটি একটি যুক্তিসঙ্গত জায়গা
মিচা Šরাজের

1
@ ভরদ্বাজরাজু কারণ কিছু পুরানো ইউনিক্স সিস্টেমে কেবলমাত্র ইতিমধ্যে সেট করা পরিবর্তনশীল রফতানি করতে পারে। উদাহরণস্বরূপ ওল্ড সোলারিস এবং এইচপি-ইউএক্স।
মিচা Šরাজের

1
আপনি একবার পরিবেশের পরিবর্তনশীল সেট করে নিলে তা কীভাবে সেট হয়ে গেছে তা নিশ্চিত করার জন্য আমি কীভাবে তা দ্রুত দেখতে পারি?
রড

1
@Rodecho $myvar
কোয়ার্টি

29

একবার পরিবেশের পরিবর্তনশীল সেট করতে, exportশেল স্ক্রিপ্টে নয়, প্রম্পটে কমান্ডটি ব্যবহার করুন :

$ export THEVAR=/example

চলকটি শেল সেশনের বাকি অংশ বা আনসেট না হওয়া পর্যন্ত সেট করা হবে।

প্রতিবার পরিবেশের পরিবর্তনশীল সেট করতে, ফাইলটিতে exportকমান্ডটি ব্যবহার .bashrcকরুন (বা আপনার শেলের জন্য উপযুক্ত প্রারম্ভিকরণ ফাইল)।

কোনও স্ক্রিপ্ট থেকে পরিবেশের পরিবর্তনশীল সেট করতে, স্ক্রিপ্টে exportকমান্ডটি ব্যবহার করুন এবং তারপরে sourceস্ক্রিপ্টটি। আপনি যদি স্ক্রিপ্টটি কার্যকর করেন তবে এটি কার্যকর হবে না।

উত্সাহ প্রদান ও সম্পাদনকারীগুলির মধ্যে পার্থক্যের ব্যাখ্যার জন্য এই উত্তরটি দেখুন: https://superuser.com ব্যাশ-স্ক্রিপ্ট / 176788 # 176788


4
আমি কেবল স্ক্রিপ্টটি সম্পাদন করে কীভাবে এটি কাজ করতে পারি? সোর্সিং ছাড়াই।
মিথিল

19

উবুন্টুতে স্থায়ীভাবে নতুন পরিবেশের পরিবর্তনশীল যুক্ত করতে (কেবলমাত্র ১৪.০৪ এ পরীক্ষিত), নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন:

  1. একটি টার্মিনাল খুলুন (টিপে CtrlAltT)
  2. sudo -H gedit /etc/environment
  3. আপনার পাসওয়ার্ড টাইপ করুন
  4. সবেমাত্র খোলা পাঠ্য ফাইলটি সম্পাদনা করুন:
    যেমন আপনি যদি যুক্ত করতে চান FOO=barতবে কেবল FOO=barএকটি নতুন লাইনে লিখুন
  5. এটি সংরক্ষণ করুন
  6. একবার সংরক্ষণ করা হলে, লগআউট এবং আবার লগইন করুন।
  7. আপনার প্রয়োজনীয় পরিবর্তনগুলি করা হয়েছে।

5
আপনার জিজ্ঞাসা সম্পর্কে আরও বিপজ্জনক বিটগুলি মুছে ফেললামsudo gedit ( জিজ্ঞাসা করুন / জিজ্ঞাসু / প্রশ্নগুলি দেখুন / 270006/… দেখুন ) এবং chmod 777। দ্বিতীয়টি কখনই কোনও সিস্টেম কনফিগারেশন ফাইলে করা উচিত নয়।
মুড়ু

এটি নির্দিষ্ট কিছু ক্ষেত্রে সঠিক উত্তর। সমস্ত সেশন, ব্যবহারকারী শেল সেশন কিনা তা এখানে নির্ধারিত ভেরিয়েবলের মান পাবে। এটি লক্ষ্য করা গুরুত্বপূর্ণ যে এটি শেল স্ক্রিপ্টের মতো দেখতেও এটি নয় - এটি আপনাকে কেবলমাত্র পরিবেশের ভেরিয়েবলগুলি সেট করতে দেয় (বনাম। যেমন শেল ফাংশন ব্যবহার করে ifবা test)
টম হ্যারিসন জুন

বারটি যদি একটি স্ট্রিং হয়, তবে আমি কি এটিকে উদ্ধৃতি চিহ্নগুলির মধ্যে রেখে দেব? পছন্দ Foo="bar"?
নীল_চিপ

@ ব্লু_চিপ নং, উদ্ধৃতি ব্যতীত কাজ করে।
ক্লিক করুন 3'20

4
পরিবেশের ভেরিয়েবলের জন্য @ ব্লু_চিপ, সবই একটি স্ট্রিং। আপনার কেবলমাত্র উক্তিগুলি দরকার যখন এতে স্পেস থাকে।
রুসলান

8

স্ক্রিপ্টটি শেষ হওয়ার পরেও পরিবেশ / পরিবর্তনের পরিবর্তনগুলি অব্যাহত রাখতে, আপনাকে source ./script.shউত্সের জন্য শর্টহ্যান্ড স্বরলিপি ব্যবহার করতে হবে , "।". ./script.sh

উত্স স্ক্রিপ্টে কমান্ডগুলি কার্যকর করবে যেমন আপনি এগুলি টাইপ করেছেন ... সুতরাং এটি স্ক্রিপ্টের কিছু দিক যেমন পরিবর্তিত হতে পারে ... তাই যদি আপনার স্ক্রিপ্টটি কিছু পরীক্ষা করে এবং মিথ্যা হলে প্রস্থান করার সিদ্ধান্ত নেয়, উদাহরণস্বরূপ, কল করার মাধ্যমে exit 0, এটি আপনার বর্তমান টার্মিনাল / শেল সেশনটি সমাপ্ত করবে।


এটি একটি অতি প্রাচীন প্রশ্ন যা ইতিমধ্যে একটি স্বীকৃত উত্তর এবং আরও কয়েক জন রয়েছে ... আরও সাম্প্রতিক প্রশ্নের উত্তর বিবেচনা করুন, দয়া করে ...
নেরডঅফকোড

3
@ নেরডোফকোড এই উত্তরটি এমন একটি সমস্যার সমাধান করে যা এখনও প্রাসঙ্গিক এবং গ্রহণযোগ্য উত্তর সহ অন্যান্য উত্তরগুলির মধ্যে কোনওটিই উল্লেখ করে না, যতক্ষণ না আমি দেখতে পাচ্ছি ... আসলে পুরানো প্রশ্নের উত্তরের উত্তর দেওয়ার জন্য দুটি ব্যাজ পাওয়া যায়, সুতরাং এটি উত্সাহিত হয়েছে
জান্না

1
এই কি আমি খুঁজছিলাম। আমার স্ক্রিপ্টের বাইরে দেখা দরকার, স্ক্রিপ্ট থেকে রফতানি চলক।
এ্যালব্যাক্স

5

আপনি যদি স্ক্রিপ্টের মাধ্যমে জিনিসগুলি করেন, স্থায়ীভাবে পরিবেশের পরিবর্তনশীল সেট করার একটি সহজ উপায় আপনার স্ক্রিপ্টের বিবৃতিতে নীচে রাখা হয়েছে,

if [[ ! -d "$MyVar" ]]; then 
    export MyVar="abc"
    echo 'export MyVar="abc"' >> ~/.bashrc
fi

আপনার যদি পিডাব্লুডির মত প্রকাশের প্রয়োজন হয় তবে আপনি এটি ব্যবহার করতে পারেন, উদাহরণস্বরূপ,

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc

1

আমি জানি এটি বেশ দেরি হয়ে গেছে তবে আপনি যদি সমস্ত ব্যবহারকারীর জন্য পরিবেশের পরিবর্তনশীল (যেমন জাভা ব্যবহার) যুক্ত করতে চান - আপনি নিম্নলিখিতটি করতে পারেন:

1) /etc/bash.bashrcন্যানো ব্যবহার করে খুলুন (আপনি যে কোনও সম্পাদকই ব্যবহার করতে পারেন, আমি ভিআইএমকে পছন্দ করি না কারণ এটি ব্যবহারকারীর বন্ধুত্বের ক্ষেত্রে সবচেয়ে খারাপ - ব্যক্তিগত কিছুই নয়)।

2) ফাইলটিতে যুক্ত করুন:

export VAR=path export PATH=$PATH:/bin 3) (আপনি যদি বাক্সটি বাউন করতে পারেন তবে আরও ভাল) - অথবা কেবলমাত্র একটি নতুন এসএসএইচ সেশন খুলুন এবং v env 'কমান্ডটি ব্যবহার করে নিশ্চিত করুন।

তবে আপনি যদি প্রতিটি ব্যবহারকারীর পক্ষে আলাদা আলাদা সেটিংস রাখতে চান তবে আপনাকে .bashrcফাইলের অধীনে পরিবর্তন (স্ক্রিপ্ট) করতে হবে ~/.bashrc(অথবা /home/$USER/আপনি যদি লিনাক্স সিস্টেমে নতুন হন)

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