জিইউআই অ্যাপ্লিকেশনগুলির জন্য ওএস এক্সে পরিবেশের ভেরিয়েবল সেট করা


18

ম্যাক ওএস এক্সে পরিবেশের পরিবর্তনশীলগুলির মধ্যে কীভাবে এমন একটি সেট আপ করা যায় যে তারা জিইউআই অ্যাপ্লিকেশনগুলির জন্য ~ / .MacOSX / পরিবেশ.plist বা লগইন হুক ব্যবহার না করে উপলব্ধ (যেহেতু এগুলি অবচিত হয় )?


@ ersin-er স্ট্যাকওভারফ্লো থেকে উত্তর "একক উত্স থেকে কমান্ড লাইন এবং জিইউআই অ্যাপ্লিকেশন উভয়ের জন্য সমাধান (ইয়োসেমাইট এবং এল ক্যাপিটেনের সাথে কাজ করে)" এই প্রশ্নটি খুঁজে পাওয়ার লোকদের আগ্রহ হতে পারে।
l --marc l

উত্তর:


16

মাউন্টেন লায়নগুলিতে সমস্ত /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: অবশ্যই আপনাকে আপনার নির্দিষ্ট পাথের প্রয়োজনের সাথে পাথ এন্ট্রি সামঞ্জস্য করতে হবে।


1
ধন্যবাদ! এটা আমার জন্য নিখুঁত ছিল। 10.11 (এল ক্যাপিটান) এ আমার পরিবর্তনগুলি কার্যকর হতে দেখতে ম্যাথু দ্বারা প্রদত্ত আদেশগুলিও চালাতে হয়েছিলInfo.plist
ডিসসিভেক

8

পুরানো লগইন হুকের নকল করতে লঞ্চ এজেন্টের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হ'ল আদেশগুলি, আরও তথ্যের জন্য এর ম্যানপেজটি দেখুন। আমার জন্য দুর্দান্ত কাজ করে (আমার উল্লেখ করা উচিত যে আমি এখনও একটি তুষার চিতা লোক), জিইউআই অ্যাপ্লিকেশন যেমন টেক্সস্টুডিও এবং টেক্সশপ আমার নিজস্ব টেক্স ট্রি দেখতে পারে। যে জিনিসগুলি উন্নত করা যেতে পারে:

  1. শেল স্ক্রিপ্ট এর একটি #filename="$1"আছে। এটি দুর্ঘটনাজনক নয়, কারণ ফাইলটির নামটি স্ক্রিপ্টে যুক্তি হিসাবে লঞ্চ এজেন্ট দ্বারা খাওয়ানো উচিত, তবে এটি কার্যকর হয় না।

  2. এখানে উল্লিখিত হিসাবে (জার্মান এবং একটি পেওয়ালের পিছনে!), এটি নিজেই লঞ্চ এজেন্টে স্ক্রিপ্ট স্থাপন করা সম্ভব।

  3. আমি নিশ্চিত না যে এই সমাধানটি কতটা সুরক্ষিত, কারণ এটি evalব্যবহারকারী সরবরাহিত স্ট্রিংগুলির সাথে ব্যবহার করে।

  4. আমি মনে রাখতে পারি যে এই পদ্ধতিটি ব্যবহার করে মনপথের সংজ্ঞাটি কার্যকর হয়নি, তবে আমি নিশ্চিত নই।

এটি উল্লেখ করা উচিত যে অ্যাপল ∼ /unchd.conf এ স্টাফ রেখে কিছুটা অনুরূপ পদ্ধতির উদ্দেশ্যেছিল তবে এটি বর্তমানে এই তারিখ এবং ওএস হিসাবে অসমর্থিত (এর ম্যানপেজটি দেখুন launchd.conf)। আমার ধারণা, গ্লোব্বিংয়ের মতো জিনিসগুলি এই প্রস্তাবটিতে যেমন কাজ করে না তেমন কাজ করে না। এবং অবশ্যই এই ফাইলগুলি অন্য যে কোনও জায়গায় রাখতে পারেন, লঞ্চ এজেন্ট ব্যতীত যা অবশ্যই / লাইব্রেরি / লঞ্চআজেন্টস / বা Library / লাইব্রেরি / লঞ্চ এজেন্টস / এ থাকা উচিত

অবশেষে, লঞ্চ এজেন্টগুলির তথ্য হিসাবে আমি যে উত্সগুলি ব্যবহার করেছি তা উল্লেখ করা উচিত: 1 , 2 , 3 , 4

আপডেট : এটি এই মুহুর্তে 10.8 সংস্করণে কাজ করে না। প্রতি প্রয়োগের ভিত্তিতে কর্মক্ষেত্রগুলি এখানে এবং এখানে বর্ণিত হয়েছে


যাইহোক, যদি কোনও টার্মিনাল পরিবেশে প্যাথ-ভেরিয়েবল সংজ্ঞায়িত করতে চায় এবং এই প্রবর্তক এজেন্টটি ব্যবহার করে, আমি export PATH=.:"$(launchctl getenv PATH)"~ / .bash_profile (একইভাবে অন্যান্য শাঁসের জন্য) লিখতে পরামর্শ দিই । path_helperশেল স্ক্রিপ্টে বলা হওয়ার পরে এটি সম্ভব called ওএস এক্স-এর PATH ভেরিয়েবল সম্পর্কে আরও তথ্যের জন্য, এই উত্তরটি দেখুন
পার্সিভাল ইউলিসেস

3

@ ফ্লোরির দেওয়া উত্তরটি আমার পক্ষে মাভারিকের জন্য কাজ করে তবে আমি প্লাস্ট ফাইল পরিবর্তন করার পরে টার্মিনালে নিম্নলিখিত কমান্ডগুলি চালিত করি

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user 

killall Finder

এল ক্যাপ্টেনের সাথে আমারও একই আচরণ ছিল এবং আমি @ ফ্লোরির উত্তরে আপনার বক্তব্য যুক্ত করেছি
সেকি

2

@ পারসিভাল-ইউলিসেসের সরবরাহ করা উত্তরটি আমার জন্য নিম্নোক্ত পরিবর্তনের সাথে ১০.৯ ম্যাভেরিক্সের জন্য কাজ করে: ঠিক আগে / ইউজারস / শেয়ার্ড / কনফ্লেঞ্চড.শ স্ক্রিপ্টটি সম্পাদনা exit 0করুন এবং লাইনগুলি যুক্ত করুন

killall Dock
killall SystemUIServer

ডক এবং মেনুবারটি পুনরায় চালু করতে। এর পরে ডক বা স্পটলাইট থেকে শুরু হওয়া অ্যাপ্লিকেশনগুলি সঠিক প্যাথের উত্তরাধিকারী হবে। আপনি যদি প্যাথ-সমালোচনামূলক অ্যাপ্লিকেশনগুলি শুরু করতে ফাইন্ডার ব্যবহার করেন তবে তা যুক্তও killall Finderহতে পারে।

ইন .bash_profileআমি লাইন ব্যবহার

export PATH=`launchctl getenv PATH`

টার্মিনালের জন্য PATH সেট করতে, PATH একই অবস্থান, ~ / .conf.launchd ফাইল থেকে নিয়ন্ত্রণ করা হয় ।


0

আরেকটি বিকল্প ব্যবহার করা হয় /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

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