ম্যাক ওএস এক্সে পরিবেশগত পরিবর্তনশীল


186

আপডেট: নীচের লিঙ্কটির একটি সম্পূর্ণ উত্তর নেই । দুটি স্থানে পথ বা ভেরিয়েবল সেট করা (এক GUI এর জন্য এবং শেলের জন্য একটি) খোঁড়া।

এর সদৃশ নয় : ওএস এক্সে পরিবেশের ভেরিয়েবল সেট করা হচ্ছে?


উইন্ডোজ ব্যাকগ্রাউন্ড থেকে আসছেন যেখানে পরিবেশের ভেরিয়েবলগুলি সেট করা এবং সংশোধন করা খুব সহজ (কেবলমাত্র সিস্টেমের বৈশিষ্ট্য> উন্নত> পরিবেশের ভেরিয়েবলগুলিতে যান), এটি ম্যাক ওএস 10.5-তে সরাসরি ফরোয়ার্ড বলে মনে হয় না। বেশিরভাগ উল্লেখ উল্লেখ করে আমার / etc / প্রোফাইল বা ~ /। প্রোফাইল আপডেট করা উচিত। সেগুলি কি সিস্টেম ভেরিয়েবল এবং ব্যবহারকারী ভেরিয়েবলগুলির সমতুল্য? উদাহরণস্বরূপ, আমি আমার JAVA_HOMEপরিবর্তনশীল কোথায় সেট করব ?


সম্পাদনা করুন:

আমি টার্মিনাল থেকে ভেরিয়েবল অ্যাক্সেস করতে সক্ষম হতে চাই পাশাপাশি একটিগ্রহের মতো একটি অ্যাপ্লিকেশন। এছাড়াও, আমি আশা করি এটি কার্যকর করতে আমার পুনরায় আরম্ভ / লগআউট করতে হবে না।


এবং লিঙ্ক প্রশ্নের উত্তরের এখানে কিছু পুনরাবৃত্তি না হওয়ার জন্য কিছু পরামর্শ রয়েছে ...
ডিএমকেকে --- প্রাক্তন মডারেটর বিড়ালছানা

উত্তর:


142

সদৃশ হওয়ার দরকার নেই। আপনি প্রবর্তন (এবং শিশু প্রক্রিয়াগুলি, অর্থাত্ স্পটলাইট থেকে শুরু করে এমন কিছু) ব্যবহার করে পরিবেশ পরিবর্তনশীল সেট করতে পারেন launchctl setenv

উদাহরণস্বরূপ, আপনি যদি নিজের বর্তমান পাথটি এখানে .bashrcবা যেখানেই সেট আপ করার পরে লঞ্চে আয়ন করতে চান :

PATH=whatever:you:want
launchctl setenv PATH $PATH

পরিবেশগত চলক চলমান অ্যাপ্লিকেশনগুলিতে স্বয়ংক্রিয়ভাবে আপডেট হয় না। আপডেট করা পরিবেশের ভেরিয়েবলগুলি পেতে আপনাকে অ্যাপ্লিকেশনগুলি পুনরায় চালু করতে হবে (যদিও আপনি কেবল নিজের শেলের মধ্যে ভেরিয়েবল সেট করতে পারেন, যেমন PATH=whatever:you:want; টার্মিনালটি পুনরায় চালু করার দরকার নেই)।


1
এখন পর্যন্ত সেরা উত্তরের মতো মনে হচ্ছে, তৃতীয় পক্ষের অ্যাপের প্রয়োজন নেই!
আবদুল্লাহ জিবালী

2
এটি বিশ্বব্যাপী বলে মনে হচ্ছে না: পরিবেশের ভেরিয়েবলগুলি সেট করে এটি ব্যবহারকারীর কাছে স্থানীয়। পরিবেশের ভেরিয়েবল সেট করার জন্য আমাদের কাছে এখনও বিশ্বব্যাপী ব্যবস্থা নেই।
অ্যান্ড্রু

@ এন্ড্রু আপনার ব্যবহারকারীর কাছে স্থানীয় কী বোঝায়? আমি আশা করব যে পরে শুরু করা সমস্ত প্রক্রিয়া প্রভাবিত হবে to
ম্যাট কার্টিস

@ ম্যাটকুর্টিস: পরিবেশ পরিবর্তনশীল সেটগুলি launchctl setenvকেবল ব্যবহারকারী পরিবর্তন করতে সক্ষম বলে মনে হচ্ছে। যদি আমি একটি সাধারণ ব্যবহারকারী হিসাবে কোনও ভেরিয়েবল সেট করে রাখি তবে এটি রুট (সুডোর মাধ্যমে) এবং তদ্বিপরীত থেকে দৃশ্যমান নয়।
অ্যান্ড্রু

2
@ অ্যান্ড্রু ঠিক আছে, রুটের নিজস্ব লঞ্চ হয়েছে - এটি প্রদর্শিত ps aux | grep launchdহবে। এছাড়াও পরীক্ষা করুন man sudo, কোন ডকুমেন্টগুলি sudo(ডিফল্টরূপে) ইচ্ছাকৃতভাবে পরিবেশটিকে পুনরায় সেট করে - যদি আপনি sudo -Eএটি পরিবেশ সংরক্ষণ করেন (আপনার সাথে যে ভেরিয়েবলগুলি সেট করেছেন launchctl setenv)। যাইহোক, এর জন্য কী আপনার কাছে সত্যিকারের অ্যাপ্লিকেশন রয়েছে? যদি তা হয় তবে এই পদ্ধতিটি কি আপনার পক্ষে কাজ করে?
ম্যাট কার্টিস

299

বেশ কয়েকটি জায়গা যেখানে আপনি পরিবেশের ভেরিয়েবল সেট করতে পারেন।

  • ~/.profile: টার্মিনাল থেকে চালু হওয়া সমস্ত প্রোগ্রামগুলিতে আপনি সেট করতে চান এমন ভেরিয়েবলগুলির জন্য এটি ব্যবহার করুন (নোট করুন লিনাক্সের বিপরীতে, টার্মিনাল.এপ-এ খোলা সমস্ত শেল লগইন শেলগুলি)।
  • ~/.bashrc: এটি শেলগুলির জন্য অনুরোধ করা হয়েছে যা লগইন শেল নয়। এটি উপকরণ এবং অন্যান্য জিনিসের জন্য ব্যবহার করুন যা উত্তরাধিকারসূত্রে প্রাপ্ত পরিবেশের ভেরিয়েবলগুলির জন্য নয়, সাব-শেলগুলিতে পুনরায় সংজ্ঞায়িত করা দরকার।
  • /etc/profile: এটি ~ /। প্রোফাইলের আগে লোড করা হয় তবে এটি অন্যথায় সমতুল্য। আপনি যখন ভেরিয়েবলটি মেশিনে সমস্ত ব্যবহারকারীর দ্বারা চালু করা টার্মিনাল প্রোগ্রামগুলিতে প্রয়োগ করতে চান তা ব্যবহার করুন (ধরে নিবেন তারা ব্যাশ ব্যবহার করে)।
  • ~/.MacOSX/environment.plist: এটি লগইন-এ উইন্ডো দ্বারা পড়া হয়। এটি জিপিআই সহ সমস্ত অ্যাপ্লিকেশনগুলিতে প্রযোজ্য, যা স্পটলাইট 10.5 (10.6 নয়) এ চালু করেছে except পরিবর্তনগুলি কার্যকর হওয়ার জন্য আপনাকে লগআউট এবং আবার লগইন করা দরকার। এই ফাইলটি আর ওএস এক্স 10.8 হিসাবে সমর্থিত নয়।
  • আপনার ব্যবহারকারীর launchdউদাহরণ: এটি ব্যবহারকারী, জিইউআই এবং সিএলআই দ্বারা চালু করা সমস্ত প্রোগ্রামের জন্য প্রযোজ্য। আপনি setenvকমান্ডটি ব্যবহার করে যে কোনও সময় পরিবর্তনগুলি প্রয়োগ করতে পারেন launchctlতত্ত্ব অনুসারে , আপনার setenvকমান্ডগুলি সন্নিবেশ করতে সক্ষম হওয়া উচিত ~/.launchd.confএবং launchdব্যবহারকারীরা লগ ইন করলে স্বয়ংক্রিয়ভাবে সেগুলি পড়তে পারে তবে বাস্তবে এই ফাইলটির জন্য সমর্থন কখনও প্রয়োগ করা হয়নি। পরিবর্তে, আপনি লগইনে কোনও স্ক্রিপ্ট কার্যকর করতে অন্য একটি প্রক্রিয়া ব্যবহার করতে পারেন launchctlএবং launchdপরিবেশ সেট আপ করার জন্য সেই স্ক্রিপ্ট কলটি রাখতে পারেন ।
  • /etc/launchd.conf: এটি যখন সিস্টেম শুরু হয় এবং যখন কোনও ব্যবহারকারী লগ ইন করে সেগুলি লঞ্চের মাধ্যমে পড়ে। চালু হওয়া চলমান রুটে পরিবর্তনগুলি প্রয়োগ করতে আপনি কমান্ডগুলিকে পাইপ করতে পারেন sudo launchctl

মূল বিষয়গুলি বুঝতে হবে:

  • পরিবেশের পরিবর্তনশীলগুলি কাঁটাচামচ করার সময় কোনও প্রক্রিয়ার শিশুরা উত্তরাধিকার সূত্রে প্রাপ্ত হয়।
  • মূল প্রক্রিয়াটি একটি লঞ্চকৃত উদাহরণ, এবং ব্যবহারকারীর সেশন অনুযায়ী পৃথক প্রবর্তিত উদাহরণও রয়েছে।
  • চালু করা আপনাকে এটির বর্তমান পরিবেশের পরিবর্তনগুলি ব্যবহার করে পরিবর্তন করতে দেয় launchctl; আপডেট হওয়া ভেরিয়েবলগুলি তখন থেকে নতুন নতুন সমস্ত প্রক্রিয়া দ্বারা উত্তোলন করা হয়।

প্রবর্তন সহ পরিবেশের পরিবর্তনশীল স্থাপনের উদাহরণ:

echo setenv REPLACE_WITH_VAR REPLACE_WITH_VALUE | launchctl

এখন, আপনার জিইউআই অ্যাপ্লিকেশনটি চালু করুন যা ভেরিয়েবল এবং ভয়েলা ব্যবহার করে!

যেটি ~/.launchd.confকাজ করে না তার আশেপাশে কাজ করার জন্য, আপনি নিম্নলিখিত স্ক্রিপ্টটি এতে রাখতে পারেন ~/Library/LaunchAgents/local.launchd.conf.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>local.launchd.conf</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>launchctl &lt; ~/.launchd.conf</string>    
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

তারপরে আপনি setenv REPLACE_WITH_VAR REPLACE_WITH_VALUEভিতরে রাখতে পারেন ~/.launchd.confএবং এটি প্রতিটি লগইনে কার্যকর করা হবে।

মনে রাখবেন যে, এই ফ্যাশনে একটি কমান্ড তালিকার প্রবর্তনকারীকে প্রবর্তন করার সময়, আপনি স্থানগুলি সহ মান সহ পরিবেশের ভেরিয়েবল সেট করতে সক্ষম হবেন না। আপনি এখন যা করতে হবে, তাহলে আপনি launchctl নিম্নরূপ কল করতে পারেন: launchctl setenv MYVARIABLE "QUOTE THE STRING"

এছাড়াও, নোট করুন যে অন্যান্য প্রোগ্রামগুলি লগইন চলাকালীন লঞ্চজেন্টের আগে কার্যকর করা হতে পারে এবং এটি সেট করে এমন পরিবেশের পরিবর্তনশীলগুলি নাও দেখতে পারে।


3
আসলে, সংক্রান্ত ~/.MacOSX/environment.plist, আমার লায়ন তে এটি করা হয় পড়া এবং ব্যবহার করা হয়েছে। শুধু এটি পরীক্ষা করা। আমি আসলে এটি .launchd.conf এর চেয়ে বেশি পছন্দ করি কারণ এটি বজায় রাখার জন্য আমি আরসিএনভায়রালেন্সের অগ্রাধিকার ফলকটি ব্যবহার করি।
গিলিমঞ্জারো

5
~/.launchd.conf10.6.8 এ কাজ করতে পারবেন না - এর কোনও প্রভাব আছে বলে মনে হচ্ছে না। এছাড়াও ম্যান পেজ বলছে এই ফাইলটি বর্তমানে অসমর্থিত।
স্নো ক্রাশ

4
~ / .launchd.conf 10.7.3 কাজ বলে মনে হচ্ছে না পারেন এবং আমি man পৃষ্ঠা অল্পক্ষণের এটা $ হোম / .launchd.conf তোমার launchd কনফিগারেশন ফাইল বলছেন (বর্তমানে অসমর্থিত)
uncreative

4
10.8 (মাউন্টেন সিংহ) এ, ~ / .MacOSX / পরিবেশ.plist আর সমর্থিত নয় list অ্যাপল দেবের মতে, আপনার পছন্দসই পরিবেশের ভেরিয়েবলের সাথে "এলএসইএনভায়রনমেন্ট" অভিধান থাকতে একটিকে অবশ্যই অ্যাপ্লিকেশনটির ইনফো.প্লিস্ট পরিবর্তন করতে হবে। " আরও তথ্যের জন্য দেখুন আপেল.স্ট্যাকেক্সেঞ্জার.কম
সেকশনস /

3
@ এলএএসি গ্রেট, বিস্তৃত পোস্ট; আপনি দয়া করে এটি আপডেট করতে পারেন যে ~/.launchd.confএটি এখনও সমর্থিত নয় এবং ওএস এক্স 10.8.3 হিসাবে কাজ করে না? দেখুনman launchd.conf
mklement0

12

আমি ভাবি যে ওপি যা খুঁজছে তা একটি সাধারণ, উইন্ডোজ-এর মতো সমাধান।

তুমি এখানে যাও:

https://www.macupdate.com/app/mac/14617/rcenvironment


1
বাহ, এটা দুর্দান্ত দেখাচ্ছে। এখনও এটি চেষ্টা করে দেখেনি তবে বর্ণনা থেকে আমার যা প্রয়োজন তা ঠিক দেখাচ্ছে।
আব্দুল্লাহ জিবালি 19

6
বিটিডব্লিউ, মূল লিঙ্কটি পোস্ট হওয়ার পর থেকেই এটি ভেঙে গেছে বলে মনে হচ্ছে (অ্যাপল কী ব্যাপার? 301 ব্যয়বহুল?) পরিবর্তে আপনি এই লিঙ্কটি ব্যবহার করতে পারেন: macupdate.com/app/mac/14617/rcenomotive
টম

এটা আসলেই পুরানো। ওএস এক্স 10.10 (ইয়োসেমাইট) এবং তারপরেও কার্যকর কাজ করে এমন একটি আধুনিক সমাধানের জন্য ওক্স-এনভি-সিঙ্কের উল্লেখ করে অন্য উত্তরটি দেখুন।
ওয়ারেন পি

1
আপনার উত্তরের লিঙ্ক থেকে তথ্য সংক্ষিপ্ত করুন। আমরা ইতিমধ্যে দেখেছি, লিঙ্ক বিভিন্ন কারণে বিরতি।
ব্যবহারকারী3.1415927

7

আপনি লিনাক্স পড়তে পারেন, যা ম্যাক ওএস এক্স এর খুব কাছাকাছি। অথবা আপনি বিএসডি ইউনিক্সে পড়তে পারেন যা কিছুটা কাছাকাছি is বেশিরভাগ ক্ষেত্রে, লিনাক্স এবং বিএসডি-র মধ্যে পার্থক্য খুব বেশি নয়।

/etc/profile সিস্টেম পরিবেশ পরিবর্তনশীল হয়।

~/.profile ব্যবহারকারী-নির্দিষ্ট পরিবেশের পরিবর্তনশীল।

"আমি আমার জাভাআহোম ভেরিয়েবলটি কোথায় সেট করব?"

  • আপনার একাধিক ব্যবহারকারী আছে? তারা কি যত্ন? একটি পরিবর্তন করে আপনি কি অন্য কোনও ব্যবহারকারীকে গোলযোগ করবেন /etc/profile?

সাধারণত, আমি একমাত্র ব্যবহারকারী হওয়া সত্ত্বেও সিস্টেম-ওয়াইড সেটিংসে গোলযোগ না করা পছন্দ করি। আমি আমার স্থানীয় সেটিংস সম্পাদনা করতে পছন্দ করি।


5

জিইউআই অ্যাপ্লিকেশনগুলির জন্য আপনাকে তৈরি করতে এবং সম্পাদনা করতে হবে ~/.MacOSX/environment.plist। আরও বিশদ এখানে । এগুলি কার্যকর করার জন্য আপনাকে লগ আউট করতে হবে। তারা টার্মিনাল থেকে চালু হওয়া অ্যাপ্লিকেশনগুলিকেও প্রভাবিত করে কিনা তা আমি নিশ্চিত নই, তবে আমি ধরে নিই যে তারা তা করবে।

টার্মিনাল থেকে প্রবর্তিত অ্যাপ্লিকেশনগুলির জন্য, আপনি ~ /। প্রোফাইল ফাইলটি সম্পাদনা করতে পারেন।


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

1
এই সমাধানটি আর ম্যাক ওএস এক্স ভি 10.7 এর কিছু সংশোধন নিয়ে কাজ করে না। এটি ম্যাক ওএস এক্স ভি 10.8 বা ততোধিক সংশোধন করে না। পরিবর্তে, দেখুন: stackoverflow.com/a/4567308/543738
LS

3

টার্মিনালের ~/.profileমাধ্যমে কেবল ফাইলটি খুলুন nanoএবং সেখানে টাইপ করুন:

export PATH=whatever/you/want:$PATH

এই ফাইলটি সংরক্ষণ করুন (সেমিডি + এক্স এবং ওয়াই)। এর পরে দয়া করে আবার লগআউট / লগইন করুন বা টার্মিনালে একটি নতুন ট্যাব খুলুন এবং আপনার নতুন ভেরিয়েবলটি ব্যবহার করার চেষ্টা করুন।

দয়া করে / আপনি / যা চান তার পরে ": AT पथ" যুক্ত করতে ভুলবেন না, অন্যথায় আপনি PATH ভেরিয়েবলের সমস্ত পাথগুলি মুছবেন, যা তার আগে সেখানে ছিল।


4
এটি কেবল ব্যাশ কমান্ড পরিবেশের ক্ষেত্রে প্রযোজ্য। আপনি এখানে সেট করেছেন ভেরিয়েবলগুলি জিইউআই অ্যাপ্লিকেশনগুলির দ্বারা দেখা যায় না।
ওয়ারেন পি

3

কমান্ড লাইন এবং জিএসআইআই অ্যাপ্লিকেশনগুলির জন্য ওএস এক্স এনভায়রনমেন্ট ভেরিয়েবলগুলি সিঙ্ক্রোনাইজ করুন ওএসএক্স -এনভি-সিঙ্ক সহ একক উত্স থেকে ।

আমি এখানে একটি সম্পর্কিত প্রশ্নের উত্তরও পোস্ট করেছি ।


এটি চমৎকার. পরামর্শ: লঞ্চটেল আনলোড / লঞ্চটেল লোড "এখনই রিফ্রেশ করুন" জিনিসটিকে স্ক্রিপ্টে রাখুন। আমি এটিকে osx-env-sync-now.sh বলেছি। আমি আমার .বাশ_ প্রোফাইলে সংশোধন করেছি এবং সামান্য "রিফ্রেশ করুন" স্ক্রিপ্টটি চালনা করছি এবং চালিয়ে যাচ্ছি। আমি মনে করি এখানে সুরক্ষা জড়িত আছে, তাই আমার মনে হয় কিছু সীমাবদ্ধতা করা উচিত। ওএস এক্স
ওয়ারেন পি

@ ওয়ারেনপি! রেপো পরীক্ষা করে দেখুন।
এরসিন এর

চমৎকার। এটি আমার জন্য অনেক যন্ত্রণা সমাধান করেছে। এটি সত্যই কার্যকর যেখানে একটি ক্ষেত্রে এসসিএএলএ-এর সাথে বিকাশকারী প্রত্যেকের পক্ষে। কমান্ড লাইন স্কেল এবং জিইউআই স্কেল উভয়ের জন্য এসসিএএলএহোম সেট করা (যেমন নেটবিনে) অন্যথায় অন্যথায় আসল ব্যথা।
ওয়ারেন পি

0

আপনি যদি পরিবেশের ভেরিয়েবলগুলি ম্যাকোজে স্থায়ীভাবে পরিবর্তন করতে চান তবে সেগুলিতে সেট করুন /etc/pathsদ্রষ্টব্য , এই ফাইলটি কেবলমাত্র ডিফল্টরূপে পঠনযোগ্য, সুতরাং আপনাকে লেখার অনুমতিগুলির জন্য chmod করতে হবে ।


এটি আমার পক্ষে কাজ করে না। আমার /usr/bin/localসেই ফাইলটিতে আছে, এমনকি ফাইলটি পরিবর্তন না করেও এটি ডিফল্টরূপে ছিল এবং এখনও আমার জিইউআই অ্যাপ্লিকেশনগুলি কেবল দেখতে পায় /usr/bin:/bin:/usr/sbin:/sbin। আমি অনেকবার রিবুট করেছি।
মিগল

@m_gol আপনি দৌড়ালে আপনি কী পাবেন cat /etc/paths/?
ইগোরগানাপলস্কি

1
/ usr / স্থানীয় / বিন, / usr / বিন, / বিন, / usr / sbin, / sbin পৃথক লাইনে। এবং তবুও উত্সট্রি প্রথমটি বাদে তাদের সকলকে দেখে।
মিগ্রোল

আপনি "আপনি যদি ম্যাকোজে ডিফল্ট পাথ পরিবর্তন করতে চান" তে সম্পাদনা করতে চাইতে পারেন । পরিবেশের ভেরিয়েবলগুলির আরও সাধারণ সমস্যার সাথে এর কোনও যোগসূত্র নেই।
rfay

0

2020 ম্যাক ওএস এক্স ক্যাটালিনা ব্যবহারকারীদের জন্য:

অন্যান্য অকেজো উত্তর সম্পর্কে ভুলে যান, এখানে কেবল দুটি পদক্ষেপের প্রয়োজন:

  1. নামকরণ কনভেনশন সহ একটি ফাইল তৈরি করুন: অগ্রাধিকার-অ্যাপনাম। তারপরে আপনি যে পথটি যুক্ত করতে চান তা অনুলিপি করুন PATH

    যেমন আমার ক্ষেত্রে 80-vscodeবিষয়বস্তু সঙ্গে /Applications/Visual Studio Code.app/Contents/Resources/app/bin/

  2. ফাইলটি সরান /etc/paths.d/। টার্মিনালে একটি নতুন ট্যাব (নতুন সেশন) খুলতে ভুলবেন না এবং echo $PATHআপনার পথটি যুক্ত হয়েছে তা পরীক্ষা করতে টাইপ করুন !

বিজ্ঞপ্তি: এই পদ্ধতি শুধুমাত্র appends আপনার পাথ PATH

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