ম্যাক ওএস এক্সে পরিবেশের পরিবর্তনশীলগুলির মধ্যে কীভাবে এমন একটি সেট আপ করা যায় যে তারা জিইউআই অ্যাপ্লিকেশনগুলির জন্য ~ / .MacOSX / পরিবেশ.plist বা লগইন হুক ব্যবহার না করে উপলব্ধ (যেহেতু এগুলি অবচিত হয় )?
ম্যাক ওএস এক্সে পরিবেশের পরিবর্তনশীলগুলির মধ্যে কীভাবে এমন একটি সেট আপ করা যায় যে তারা জিইউআই অ্যাপ্লিকেশনগুলির জন্য ~ / .MacOSX / পরিবেশ.plist বা লগইন হুক ব্যবহার না করে উপলব্ধ (যেহেতু এগুলি অবচিত হয় )?
উত্তর:
মাউন্টেন লায়নগুলিতে সমস্ত /etc/pathsএবং /etc/launchd.confসম্পাদনা কার্যকর হয় না!
অ্যাপলের বিকাশকারী ফোরামগুলি বলে:
"আপনার পছন্দের পরিবেশের ভেরিয়েবলগুলির সাথে একটি" এলএসইএনভায়রনমেন্ট "অভিধান রাখার জন্য নিজেই অ্যাপ্লিকেশনটির ইনফো.প্লিস্ট পরিবর্তন করুন।
। / .MacOSX / পরিবেশ.plist আর সমর্থিত নয় p "
সুতরাং আমি সরাসরি অ্যাপ্লিকেশনটির সম্পাদনা করেছি Info.plist("AppName.app" এ ডান ক্লিক করুন (এক্ষেত্রে SourceTree) এবং তারপরে " Show package contents")

এবং একটি নতুন কী / ডিক জোড় যুক্ত করেছে:
<key>LSEnvironment</key>
<dict>
<key>PATH</key>
<string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string>
</dict>
(দেখুন: অ্যাপলে লঞ্চ সার্ভিসকিজ ডকুমেন্টেশন )

এখন অ্যাপ (আমার ক্ষেত্রে সোর্সট্রি) প্রদত্ত পাথটি ব্যবহার করে এবং 1.9.3 :-) গিটের সাথে কাজ করে
PS: অবশ্যই আপনাকে আপনার নির্দিষ্ট পাথের প্রয়োজনের সাথে পাথ এন্ট্রি সামঞ্জস্য করতে হবে।
Info.plist ।
পুরানো লগইন হুকের নকল করতে লঞ্চ এজেন্টেরlaunchctl সাথে একত্রে সমাধানটি কার্যকারিতা ব্যবহার করে । স্টোর ব্যবহার করে অন্যান্য সমাধানের জন্য , এই তুলনাটি দেখুন । এখানে ব্যবহৃত লঞ্চ এজেন্টটি / লাইব্রেরি / লঞ্চ এজেন্টস / এ অবস্থিত :launchd
<?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>user.conf.launchd</string>
<key>Program</key>
<string>/Users/Shared/conflaunchd.sh</string>
<key>ProgramArguments</key>
<array>
<string>~/.conf.launchd</string>
</array>
<key>EnableGlobbing</key>
<true/>
<key>RunAtLoad</key>
<true/>
<key>LimitLoadToSessionType</key>
<array>
<string>Aqua</string>
<string>StandardIO</string>
</array>
</dict>
</plist>
একটি গুরুত্বপূর্ণ বিষয় হ'ল রানআউটলয়েড কী যাতে সম্ভব লঞ্চ এজেন্টটিকে প্রাথমিক পর্যায়ে কার্যকর করা যায়। বাস্তব কাজ শেল স্ক্রিপ্ট মধ্যে সম্পন্ন করা হয় /Users/Shared/conflaunchd.sh , যেখানে লেখা আছে ~ / .conf.launchd এবং তা ফিড launchctl:
#! /bin/bash
#filename="$1"
filename="$HOME/.conf.launchd"
if [ ! -r "$filename" ]; then
exit
fi
eval $(/usr/libexec/path_helper -s)
while read line; do
# skip lines that only contain whitespace or a comment
if [ ! -n "$line" -o `expr "$line" : '#'` -gt 0 ]; then continue; fi
eval launchctl $line
done <"$filename"
exit 0
PATH টি সঠিকভাবে সেট আপ path_helperকরার জন্য কলটি লক্ষ্য করুন । অবশেষে, ~ / .conf.launchd এর মতো দেখতে লাগে
setenv PATH ~/Applications:"${PATH}"
setenv TEXINPUTS .:~/Documents/texmf//:
setenv BIBINPUTS .:~/Documents/texmf/bibtex//:
setenv BSTINPUTS .:~/Documents/texmf/bibtex//:
# Locale
setenv LANG en_US.UTF-8
এগুলি launchctlহ'ল আদেশগুলি, আরও তথ্যের জন্য এর ম্যানপেজটি দেখুন। আমার জন্য দুর্দান্ত কাজ করে (আমার উল্লেখ করা উচিত যে আমি এখনও একটি তুষার চিতা লোক), জিইউআই অ্যাপ্লিকেশন যেমন টেক্সস্টুডিও এবং টেক্সশপ আমার নিজস্ব টেক্স ট্রি দেখতে পারে। যে জিনিসগুলি উন্নত করা যেতে পারে:
শেল স্ক্রিপ্ট এর একটি #filename="$1"আছে। এটি দুর্ঘটনাজনক নয়, কারণ ফাইলটির নামটি স্ক্রিপ্টে যুক্তি হিসাবে লঞ্চ এজেন্ট দ্বারা খাওয়ানো উচিত, তবে এটি কার্যকর হয় না।
এখানে উল্লিখিত হিসাবে (জার্মান এবং একটি পেওয়ালের পিছনে!), এটি নিজেই লঞ্চ এজেন্টে স্ক্রিপ্ট স্থাপন করা সম্ভব।
আমি নিশ্চিত না যে এই সমাধানটি কতটা সুরক্ষিত, কারণ এটি evalব্যবহারকারী সরবরাহিত স্ট্রিংগুলির সাথে ব্যবহার করে।
আমি মনে রাখতে পারি যে এই পদ্ধতিটি ব্যবহার করে মনপথের সংজ্ঞাটি কার্যকর হয়নি, তবে আমি নিশ্চিত নই।
এটি উল্লেখ করা উচিত যে অ্যাপল ∼ /unchd.conf এ স্টাফ রেখে কিছুটা অনুরূপ পদ্ধতির উদ্দেশ্যেছিল তবে এটি বর্তমানে এই তারিখ এবং ওএস হিসাবে অসমর্থিত (এর ম্যানপেজটি দেখুন launchd.conf)। আমার ধারণা, গ্লোব্বিংয়ের মতো জিনিসগুলি এই প্রস্তাবটিতে যেমন কাজ করে না তেমন কাজ করে না। এবং অবশ্যই এই ফাইলগুলি অন্য যে কোনও জায়গায় রাখতে পারেন, লঞ্চ এজেন্ট ব্যতীত যা অবশ্যই / লাইব্রেরি / লঞ্চআজেন্টস / বা Library / লাইব্রেরি / লঞ্চ এজেন্টস / এ থাকা উচিত ।
অবশেষে, লঞ্চ এজেন্টগুলির তথ্য হিসাবে আমি যে উত্সগুলি ব্যবহার করেছি তা উল্লেখ করা উচিত: 1 , 2 , 3 , 4 ।
আপডেট : এটি এই মুহুর্তে 10.8 সংস্করণে কাজ করে না। প্রতি প্রয়োগের ভিত্তিতে কর্মক্ষেত্রগুলি এখানে এবং এখানে বর্ণিত হয়েছে ।
export PATH=.:"$(launchctl getenv PATH)"~ / .bash_profile (একইভাবে অন্যান্য শাঁসের জন্য) লিখতে পরামর্শ দিই । path_helperশেল স্ক্রিপ্টে বলা হওয়ার পরে এটি সম্ভব called ওএস এক্স-এর PATH ভেরিয়েবল সম্পর্কে আরও তথ্যের জন্য, এই উত্তরটি দেখুন ।
@ ফ্লোরির দেওয়া উত্তরটি আমার পক্ষে মাভারিকের জন্য কাজ করে তবে আমি প্লাস্ট ফাইল পরিবর্তন করার পরে টার্মিনালে নিম্নলিখিত কমান্ডগুলি চালিত করি
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
killall Finder
@ পারসিভাল-ইউলিসেসের সরবরাহ করা উত্তরটি আমার জন্য নিম্নোক্ত পরিবর্তনের সাথে ১০.৯ ম্যাভেরিক্সের জন্য কাজ করে: ঠিক আগে / ইউজারস / শেয়ার্ড / কনফ্লেঞ্চড.শ স্ক্রিপ্টটি সম্পাদনা exit 0করুন এবং লাইনগুলি যুক্ত করুন
killall Dock
killall SystemUIServer
ডক এবং মেনুবারটি পুনরায় চালু করতে। এর পরে ডক বা স্পটলাইট থেকে শুরু হওয়া অ্যাপ্লিকেশনগুলি সঠিক প্যাথের উত্তরাধিকারী হবে। আপনি যদি প্যাথ-সমালোচনামূলক অ্যাপ্লিকেশনগুলি শুরু করতে ফাইন্ডার ব্যবহার করেন তবে তা যুক্তও killall Finderহতে পারে।
ইন .bash_profileআমি লাইন ব্যবহার
export PATH=`launchctl getenv PATH`
টার্মিনালের জন্য PATH সেট করতে, PATH একই অবস্থান, ~ / .conf.launchd ফাইল থেকে নিয়ন্ত্রণ করা হয় ।
আরেকটি বিকল্প ব্যবহার করা হয় /etc/launchd.conf। উদাহরণস্বরূপ, আমি PATHএই লাইনটি যুক্ত করে ডিফল্টটি পরিবর্তন করেছি /etc/launchd.conf:
setenv PATH ~/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
আপনি /etc/launchd.confপুনরায় চালু করে বা launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.confপ্রক্রিয়া চালিয়ে ও শেষ করে এবং পুনরায় চালু করে পরিবর্তনগুলিতে প্রয়োগ করতে পারেন ।
/etc/launchd.confরুট লঞ্চ করা প্রক্রিয়া এবং প্রতি ব্যবহারকারী লঞ্চ হওয়া প্রক্রিয়া উভয় ক্ষেত্রেই সেটিংস প্রয়োগ হয়। পরিবেশের সঙ্গে সেট ভেরিয়েবল setenvমধ্যে /etc/launchd.confউভয় দেখানো হয় sudo launchctl exportএবং launchctl export।