একক উত্স থেকে কমান্ড লাইন এবং জিইউআই অ্যাপ্লিকেশনগুলির সমাধান ( ম্যাক ওএস এক্স ভি 10.10 (ইয়োসেমাইট) এবং ম্যাক ওএস এক্স ভি 10.11 (এল ক্যাপিটান) এর সাথে কাজ করে)
আসুন ধরে নেওয়া যাক ~/.bash_profile
নীচের স্নিপেটে আপনার মত পরিবেশের পরিবর্তনশীল সংজ্ঞা রয়েছে :
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
export GOPATH="$HOME/go"
export PATH="$PATH:/usr/local/opt/go/libexec/bin:$GOPATH/bin"
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"
আমাদের একটি লঞ্চ এজেন্ট দরকার যা প্রতিটি লগইন এবং যে কোনও সময় চাহিদা অনুসারে চলবে যা ব্যবহারকারীর সেশনে এই ভেরিয়েবলগুলি লোড করতে চলেছে। আমাদের এই সংজ্ঞাগুলি বিশ্লেষণ করতে এবং এজেন্ট দ্বারা সম্পাদন করার জন্য প্রয়োজনীয় কমান্ডগুলি তৈরি করতে শেল স্ক্রিপ্টেরও প্রয়োজন হবে।
নিম্নলিখিত বিষয়বস্তু সহ ডিরেক্টরিতে plist
প্রত্যয় (যেমন নামযুক্ত osx-env-sync.plist
) দিয়ে একটি ফাইল তৈরি করুন ~/Library/LaunchAgents/
:
<?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>osx-env-sync</string>
<key>ProgramArguments</key>
<array>
<string>bash</string>
<string>-l</string>
<string>-c</string>
<string>
$HOME/.osx-env-sync.sh
</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
-l
প্যারামিটারটি এখানে গুরুত্বপূর্ণ; এটি একটি সঙ্গে শেল স্ক্রিপ্ট নির্বাহ জন্য প্রয়োজন লগ-ইন শেল যাতে ~/.bash_profile
প্রথম স্থানে sourced হওয়ার আগে এই স্ক্রিপ্টের মৃত্যুদন্ড কার্যকর করা হয়।
এখন, শেল স্ক্রিপ্ট। ~/.osx-env-sync.sh
নিম্নলিখিত বিষয়বস্তু সহ এটি তৈরি করুন :
grep export $HOME/.bash_profile | while IFS=' =' read ignoreexport envvar ignorevalue; do
launchctl setenv ${envvar} ${!envvar}
done
শেল স্ক্রিপ্ট সম্পাদনযোগ্য কিনা তা নিশ্চিত করুন:
chmod +x ~/.osx-env-sync.sh
এখন, বর্তমান সেশনের জন্য লঞ্চ এজেন্টটি লোড করুন:
launchctl load ~/Library/LaunchAgents/osx-env-sync.plist
(পুনরায়) একটি জিইউআই অ্যাপ্লিকেশন চালু করুন এবং এটি পরিবেশের ভেরিয়েবলগুলি পড়তে পারে কিনা তা যাচাই করুন।
সেটআপ অধ্যবসায়ী। এটি পুনরায় আরম্ভ এবং রিগলিনগুলি টিকে থাকবে।
প্রাথমিক সেটআপের পরে (যা আপনি সবেমাত্র করেছেন) আপনি যদি ~/.bash_profile
নিজের পুরো পরিবেশে আপনার কোনও পরিবর্তনগুলি আবার প্রতিবিম্বিত launchctl load ...
করতে চান তবে কমান্ডটি পুনরায় চালু করা আপনার যা করতে চান তা সম্পাদন করবে না; পরিবর্তে আপনি নিম্নলিখিত মত একটি সতর্কতা পাবেন:
<$HOME>/Library/LaunchAgents/osx-env-sync.plist: Operation already in progress
লগআউট / লগইন প্রক্রিয়াটি না দিয়ে আপনার পরিবেশের ভেরিয়েবলগুলি পুনরায় লোড করার জন্য নিম্নলিখিতটি করুন:
launchctl unload ~/Library/LaunchAgents/osx-env-sync.plist
launchctl load ~/Library/LaunchAgents/osx-env-sync.plist
পরিশেষে নিশ্চিত হয়ে নিন যে আপনি ইতিমধ্যে আপনার চলমান অ্যাপ্লিকেশনগুলি পুনরায় চালু করেছেন (টার্মিনাল.এপ সহ) পরিবর্তনের বিষয়ে তাদের সচেতন করতে।
আমি কোড এবং ব্যাখ্যাগুলি এখানে একটি গিটহাব প্রকল্পেও ফেলেছি: osx-env-sync ।
আমি আশা করি এটি চূড়ান্ত সমাধান হতে চলেছে, কমপক্ষে ওএস এক্সের সর্বশেষতম সংস্করণগুলির (জোসেমাইট এবং এল ক্যাপিটান) জন্য।
env "switch.1.disabled=true" open -n /Applications/Eclipse.app/
একটি নতুন সেট সিস্টেম পরিবেশের সাথে জিইউআই অ্যাপ্লিকেশন চালু করতে।