ওপেন এক্স জোসেমাইট / এল ক্যাপিটান / ম্যাকস সিয়েরা / মোজাভেতে আর কাজ করে না?


189

দেখে মনে হচ্ছে এটি launchd.confআর আমার পরিবেশের পরিবর্তনশীল লোড করে না। অন্য কেউ যে খেয়াল করেনি?

স্থায়ীভাবে পরিবেশের ভেরিয়েবলগুলি সেট করার জন্য আরও কি কোনও সমাধান রয়েছে?


এটি কাজ করে এবং অ্যাপ্লিকেশনটিতে নিজেকে উপলভ্য করে তবে টার্মিনালে নয়
চ্যাং ঝাও

উত্তর:


158

এই বিষয়বস্তু দিয়ে একটি environment.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>my.startup</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>
    launchctl setenv PRODUCTS_PATH /Users/mortimer/Projects/my_products
    launchctl setenv ANDROID_NDK_HOME /Applications/android-ndk
    launchctl setenv PATH $PATH:/Applications/gradle/bin
    </string>

  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

আপনি ব্লকের launchctlভিতরে অনেকগুলি কমান্ড যুক্ত করতে পারেন <string></string>

plistসিস্টেম পুনরায় বুট করার পরে সক্রিয় হবে না। আপনি launchctl load ~/Library/LaunchAgents/environment.plistএটি অবিলম্বে চালু করতে ব্যবহার করতে পারেন ।

[সম্পাদনা]

একই সমাধান এল ক্যাপিটনেও কাজ করে।

এক্সকোড 7.0+ ডিফল্টরূপে পরিবেশের ভেরিয়েবলগুলি মূল্যায়ন করে না। পুরানো আচরণ এই আদেশ দিয়ে সক্ষম করা যেতে পারে:

defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO

[সম্পাদনা]

বেশ কয়েকটি পরিস্থিতি যেখানে এটি বেশ কার্যকর হয় না। যদি কম্পিউটারটি পুনরায় চালু হয় এবং "উইন্ডোজগুলিতে আবার লগ ইন করার সময় পুনরায় খুলুন" নির্বাচন করা হয়, পুনরায় খোলা উইন্ডোজগুলি ভেরিয়েবলগুলি নাও দেখতে পারে (সম্ভবত এজেন্ট চালুর আগে সেগুলি খোলা হয়)। এছাড়াও, আপনি যদি ssh- এর মাধ্যমে লগ ইন করেন তবে ভেরিয়েবলগুলি সেট করা হবে না (সুতরাং আপনাকে সেগুলি ~ / .bash_profile এ সেট করতে হবে)। শেষ অবধি, এটি এল ক্যাপিটান এবং সিয়েরায় PATH এর পক্ষে কাজ করবে বলে মনে হচ্ছে না। এটি 'লঞ্চাক্টল কনফিগার ব্যবহারকারীর পাথ ...' এবং / ইত্যাদি / পাথের মাধ্যমে সেট করা দরকার।


20
রিবুট করার দরকার নেই! আপনি "লঞ্চাক্টল স্টার্ট এনভায়রনমেন্ট.পুলিস্ট" করতে পারেন এবং নতুন
এনভির ভার্সনগুলি

1
এটি আমার জন্য PATH ভেরিয়েবলের সাথে কাজ করবে না। সুতরাং অন্যান্য ভেরিয়েবল সেট করার জন্য এই পদ্ধতির পাশাপাশি, আমি আমার। / .Bash_profile এ PATH ভেরিয়েবল সেট করেছিলাম। এটি প্রতিটি ক্ষেত্রে কার্যকর নাও হতে পারে তবে এখন পর্যন্ত আমার কোনও সমস্যা হয়নি।
djule5

6
এটা মূর্ত আউট: রিবুট ছাড়া কাজ করার জন্য, এটি "launchctl হওয়া উচিত লোড environment.plist", না শুরু
ডেভ Hartnoll

2
অই হ্যাঁ. অস্পষ্ট কনফিগারেশন সেটিংসের মতো কিছুই যা পুরো ইন্টারনেটের (গুগল UseSanitizedBuildSystemEnvironment) 9 বার প্রদর্শিত হয় ।
ওহাদ স্নাইডার

2
সিয়েরা
তেও

64

[ আসল উত্তর ]: আপনি এখনও launchctl setenv variablename valueএকটি ভেরিয়েবল সেট করতে ব্যবহার করতে পারেন যাতে এটি সমস্ত অ্যাপ্লিকেশন দ্বারা গ্রহণ করা হয় (টার্মিনালের মাধ্যমে শুরু হওয়া গ্রাফিকাল অ্যাপ্লিকেশনগুলি ডক বা স্পটলাইটের মাধ্যমে শুরু হয়েছিল)।

স্পষ্টতই আপনি লগইন করার সময় আপনি এটি করতে চাইবেন না।

[ সম্পাদনা ]: এটি এড়াতে, চালু করুন AppleScript Editor, এই জাতীয় কমান্ড লিখুন:

do shell script "launchctl setenv variablename value"

(আপনি একাধিক ভেরিয়েবল সেট করতে চাইলে একাধিক লাইন ব্যবহার করুন)

এখন ফাইল ফর্ম্যাট হিসাবে ( + s) সংরক্ষণ করুন : অ্যাপ্লিকেশন । অবশেষে System Settingsব্যবহারকারী ও গোষ্ঠীগুলিলগইন আইটেমগুলি খুলুন এবং আপনার নতুন অ্যাপ্লিকেশনটি যুক্ত করুন।

[ আসল উত্তর ]: একটি ছোট শেল স্ক্রিপ্টে আপনি যে সমস্ত ভেরিয়েবলগুলি সংজ্ঞায়িত করতে চান তা এই জায়গায় কাজ করতে, তারপরে MacOS লগইনে কীভাবে স্ক্রিপ্ট চালানো যায় সে সম্পর্কে পূর্ববর্তী উত্তরটি একবার দেখুন । এইভাবে স্ক্রিপ্টটি চালু করা হবে যখন ব্যবহারকারী লগ ইন করবেন।

[ সম্পাদনা ]: কোনও সমাধানই নিখুঁত নয় কারণ ভেরিয়েবলগুলি কেবলমাত্র সেই নির্দিষ্ট ব্যবহারকারীর জন্য সেট করা হবে তবে আমি আশা করছি / অনুমান করছি যা আপনার প্রয়োজন হতে পারে।

আপনার যদি একাধিক ব্যবহারকারী থাকে তবে আপনি নিজেই তাদের প্রত্যেকের জন্য একটি লগইন আইটেম সেট করতে পারেন বা একই শেল স্ক্রিপ্টের দিকে নির্দেশ করে তাদের প্রতিটি স্থানীয় লাইব্রেরী / লঞ্চআজেন্ট ডিরেক্টরিতে com.user.loginscript.plist এর একটি অনুলিপি রাখতে পারেন

মঞ্জুর, এই কাজের ক্ষেত্রগুলির কোনওটিই /etc/launchd.conf এর মতো সুবিধাজনক নয়

[ আরও সম্পাদনা ]: নীচের একজন ব্যবহারকারী উল্লেখ করেছেন যে এটি তার পক্ষে কাজ করে না। তবে আমি একাধিক ইয়োসেমাইট মেশিনে পরীক্ষা করেছি এবং এটি আমার পক্ষে কাজ করে। আপনার যদি সমস্যা হয় তবে মনে রাখবেন এটি কার্যকর হওয়ার জন্য আপনার অ্যাপ্লিকেশনগুলি পুনরায় চালু করতে হবে। অতিরিক্ত হিসাবে আপনি যদি টার্মিনালে ~ /। প্রোফাইল বা ~ / .bash_profile এর মাধ্যমে ভেরিয়েবল সেট করে থাকেন তবে শেল থেকে শুরু হওয়া অ্যাপ্লিকেশনগুলির জন্য তারা লঞ্চক্টেল সেটেনভের মাধ্যমে সেট জিনিসগুলি ওভাররাইড করবে ।


5
আমি যতদূর বলতে পারি, এই কৌশলটির একটি নেতিবাচক দিকটি হ'ল লগইন-এ শুরু হওয়া অন্য কোনও অ্যাপ্লিকেশনের জন্য চলক (গুলি) সেট করা হবে না। সুতরাং উদাহরণস্বরূপ, আপনি যদি টার্মিনালটি খোলেন, ভেরিয়েবলটি সেট করা হবে, তবে আপনি যদি টার্মিনালটি স্বয়ংক্রিয়ভাবে পুনঃসূচনা করে আবার লগ-অফ করে ফিরে যান, ভেরিয়েবলটি আনসেট করা হবে ...
জেসনডি

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

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

2
এটি সাধারণভাবে কাজ করবে, তবে ইয়োসেমাইটে একটি বাগ রয়েছে (অন্তত 10.10.0 এবং 10.10.1) যেখানে AT PATH সেট করা এইভাবে কাজ করে না। অ্যাপল বাগ সম্পর্কে সচেতন। বর্তমানে (10.10.1 হিসাবে) জিইউআই অ্যাপ্লিকেশনগুলির জন্য সিস্টেম-বিস্তৃত AT PATH সেট করার কোনও উপায় নেই।
টিজে লুওমা

3
আপনি উপরে উল্লিখিত একটি পদ্ধতি ব্যবহার করার পরে এবং আপনার ল্যাপটপটি পুনরায় বুট করার পরে - আপনি অ্যাপ্লিকেশনগুলি স্পষ্টভাবে পুনরায় খোলা রেখেছেন তা নিশ্চিত করুন (যেমন আইটার্ম, টার্মিনাল, এক্লিপস, আইডিইএ বা আপনি যা কিছু ব্যবহার করছেন)। যদি আপনি এগুলি স্পষ্টভাবে পুনরায় আরম্ভ না করেন এবং ওএসএক্স পুনরায় চালু করার সময় যদি চেকবক্সটি "লগ ইন করার সময় উইন্ডোজ পুনরায় চালু করুন" (যা পূর্বনির্ধারিত হয়) চেক করা হয়েছিল - এই প্রোগ্রামগুলি তাজা পরিবেশের ভেরিয়েবলগুলি পড়বে না।
রান

21

3 ফাইল + 2 কমান্ড সহ ম্যাক ওএস এক্স 10.10 ইয়োসেমাইটে পরিবেশের পরিবর্তনগুলি সেট করা সম্ভব।

পরিবেশের ভেরিয়েবল সংজ্ঞা সহ প্রধান ফাইল:

$ ls -la /etc/environment 
-r-xr-xr-x  1 root  wheel  369 Oct 21 04:42 /etc/environment
$ cat /etc/environment
#!/bin/sh

set -e

syslog -s -l warn "Set environment variables with /etc/environment $(whoami) - start"

launchctl setenv JAVA_HOME      /usr/local/jdk1.7
launchctl setenv MAVEN_HOME     /opt/local/share/java/maven3

if [ -x /usr/libexec/path_helper ]; then
    export PATH=""
    eval `/usr/libexec/path_helper -s`
    launchctl setenv PATH $PATH
fi

osascript -e 'tell app "Dock" to quit'

syslog -s -l warn "Set environment variables with /etc/environment $(whoami) - complete"

ব্যবহারকারীর অ্যাপ্লিকেশনগুলির জন্য পরিবেশের ভেরিয়েবলগুলি লোড করার পরিষেবা সংজ্ঞা (টার্মিনাল, আইডিই, ...):

$ ls -la /Library/LaunchAgents/environment.user.plist
-rw-------  1 root  wheel  504 Oct 21 04:37 /Library/LaunchAgents/environment.user.plist
$ sudo cat /Library/LaunchAgents/environment.user.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>environment.user</string>
    <key>ProgramArguments</key>
    <array>
            <string>/etc/environment</string>
    </array>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>WatchPaths</key>
    <array>
        <string>/etc/environment</string>
    </array>
</dict>
</plist>

রুট ব্যবহারকারী অ্যাপ্লিকেশনগুলির জন্য একই পরিষেবা সংজ্ঞা:

$ ls -la /Library/LaunchDaemons/environment.plist
-rw-------  1 root  wheel  499 Oct 21 04:38 /Library/LaunchDaemons/environment.plist
$ sudo cat /Library/LaunchDaemons/environment.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>environment</string>
    <key>ProgramArguments</key>
    <array>
            <string>/etc/environment</string>
    </array>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>WatchPaths</key>
    <array>
        <string>/etc/environment</string>
    </array>
</dict>
</plist>

এবং অবশেষে আমাদের এই পরিষেবাগুলি নিবন্ধিত করা উচিত:

$ launchctl load -w /Library/LaunchAgents/environment.user.plist
$ sudo launchctl load -w /Library/LaunchDaemons/environment.plist

আমরা কী পাই:

  1. সিস্টেম এনভায়রনমেন্ট ভেরিয়েবলগুলি ঘোষণা করার একমাত্র জায়গা: / ইত্যাদি / এনভায়রনমেন্ট
  2. / ইত্যাদি / এনভায়রনমেন্ট ফাইল পরিবর্তন করার পরে এনভায়রনমেন্ট ভেরিয়েবলগুলির তাত্ক্ষণিক স্বয়ংক্রিয় আপডেট - কেবল আপনার অ্যাপ্লিকেশনটি পুনরায় চালু করুন

সমস্যা / সমস্যা:

সিস্টেম পুনরায় বুট করার পরে অ্যাপ্লিকেশনগুলি দ্বারা আপনার এনভির ভেরিয়েবলগুলি সঠিকভাবে নেওয়া হয়েছিল যাতে আপনার প্রয়োজন হবে:

  • হয় দুবার লগইন করুন: login => লগআউট => লগইন করুন
  • অথবা ম্যানুয়ালি অ্যাপ্লিকেশনগুলি বন্ধ ও পুনরায় খুলুন, যেখানে এনভির ভেরিয়েবলগুলি নেওয়া উচিত
  • বা "লগ ইন করার সময় উইন্ডো পুনরায় খুলুন" বৈশিষ্ট্যটি ব্যবহার করবেন না।

অ্যাপল লোড করা পরিষেবার সুস্পষ্ট অর্ডার অস্বীকার করার কারণে এটি ঘটে, সুতরাং এনভির ভেরিয়েবলগুলি "পুনরায় খোলা সারি" প্রক্রিয়াকরণের সাথে সমান্তরালে নিবন্ধিত হয়।

তবে প্রকৃতপক্ষে, আমি প্রতি বছর আমার সিস্টেমে কেবল কয়েকবার রিবুট করি (বড় আপডেটে), সুতরাং এটি কোনও বড় কথা নয়।


ভালো বুদ্ধি. আমি এটি চেষ্টা করেছি এবং এটি বেশিরভাগ এনভায়রনমেন্ট ভেরিয়েবলের জন্য কাজ করে (যেমন JAVA_HOME) তবে PATHভেরিয়েবলের জন্য নয় ( আমার জিজ্ঞাসার প্রশ্নটি আলাদা করুন )।
হলিওলিও

4
PATH / etc / পাথ ফাইলের সাথে সেট করা উচিত। এই ফাইলটির শেষে আপনার কাস্টম পাথটি যুক্ত করুন।
ursa

আমি এর সাথে পরিচিত নই launchd, তবে বুট করার সময় (যেমন লগইন করার আগে) সেই ডেমনগুলি লোড করা কি সম্ভব হবে না? এটি আপনার উল্লেখ করা সমস্ত সমস্যার সমাধান করবে।
ডিম

আমি উপরের পদ্ধতিটি পছন্দ করি তবে পরিচালনা করার জন্য একটি অদ্ভুত সমস্যা রয়েছে। পুনরায় বুট করার পরে একটি জেনেট VARNAME আমাকে সঠিক মান দেয় তবে প্রতিধ্বনি $ VARNAME কিছুই দেয় না। এর কারণ কী হতে পারে? আমি পোস্ট করেছিলাম যে স্ট্যাকওভারফ্লো / প্রশ্নগুলি / ২70০৪৫১137//২ তেও এবং আশা করি যে এখানে যে কারও ধারণা আছে
সিটিপি

উপরে বর্ণিত অনুসারে / ইত্যাদি / পরিবেশের ফাইল অনুমতি রয়েছে কিনা তা নিশ্চিত করুন are
imanuelcostigan

6

থেকে উদ্ধৃত

Apple Developer Relations 10-Oct-2014 09:12 PM

অনেক বিবেচনার পরে ইঞ্জিনিয়ারিং এই বৈশিষ্ট্যটি সরিয়ে নিয়েছে। /etc/launchd.confসুরক্ষা কারণে ফাইলটি ইচ্ছাকৃতভাবে সরানো হয়েছে। কার্যকারণ হিসাবে, আপনি launchctl limitবুটের প্রথম দিকে রুট হিসাবে চালাতে পারেন , সম্ভবত এ থেকে LaunchDaemon। (...)

সমাধান:

/Library/LaunchDaemons/com.apple.launchd.limit.plistবাশ-স্ক্রিপ্ট দ্বারা কোড রাখুন :

#!/bin/bash

echo '<?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>eicar</string>
        <key>ProgramArguments</key>
        <array>
                <string>/bin/launchctl</string>
                <string>limit</string>
                <string>core</string>
                <string>unlimited</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>ServiceIPC</key>
        <false/>
</dict>
</plist>' | sudo tee /Library/LaunchDaemons/com.apple.launchd.limit.plist

1
আপনি এই আরও কিছুটা ব্যাখ্যা করতে পারেন? 'সমস্যার সমাধান' প্রাথমিক সমস্যার সাথে কীভাবে সম্পর্কিত তা আমি দেখতে পাচ্ছি না!
নিক এইচ 247

না ওপি, কিন্তু আমি মনে করি সারকথা এখানে: এই plist করা /Library/LaunchDaemons, এবং পরিবর্তে বলার launchctlচালানোর জন্য limitকমান্ড চালানো বলতে setenvসঙ্গে কমান্ড PATHএবং আর্গুমেন্ট হিসাবে একটি পাথ পংক্তি। launchdএটি শুরুতে স্বয়ংক্রিয়ভাবে বাছাই করা উচিত এবং প্রায় তত্ক্ষণাত্ স্ব-সংশোধিত হওয়া বাছাই করা উচিত।
লেয়ার্ড নেলসন

5
এক্সএমএল অসম্পূর্ণভাবে অনুলিপি করা হয়েছে। <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
ডকটিপ

6
@Aax সেই প্লাস্টের কোন অংশটি আসলে পরিবেশের পরিবর্তনশীল সেট করে?
হেয়ারআফডডগ

3

পুরানো আচরণ পুনরুদ্ধার করার জন্য এখানে আদেশগুলি দেওয়া হল:

# create a script that calls launchctl iterating through /etc/launchd.conf
echo '#!/bin/sh

while read line || [[ -n $line ]] ; do launchctl $line ; done < /etc/launchd.conf;
' > /usr/local/bin/launchd.conf.sh

# make it executable
chmod +x /usr/local/bin/launchd.conf.sh

# launch the script at startup
echo '<?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>launchd.conf</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>/usr/local/bin/launchd.conf.sh</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>
' > /Library/LaunchAgents/launchd.conf.plist

এখন আপনি setenv JAVA_HOME /Library/Java/Homeইন কমান্ড নির্দিষ্ট করতে পারেন /etc/launchd.conf

এল ক্যাপিটনে চেক করা হয়েছে।


2

আমার জন্য কী কাজ করেছে (aax 'ধন্যবাদ থেকে অনুপ্রাণিত):

এটিকে / লাইবারি / লঞ্চডেমোনস / কম.এপল.লঞ্চড.লিমিট.প্লেস্টে পেস্ট করুন তারপরে পুনরায় বুট করুন:

<?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>eicar</string>
  <key>ProgramArguments</key>
  <array>
    <string>/bin/launchctl</string>
    <string>limit</string>
    <string>maxfiles</string>
    <string>16384</string>
    <string>16384</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>ServiceIPC</key>
  <false/>
</dict>
</plist>

যদি আপনার এটি ধাপে ধাপে প্রয়োজন হয়:

  • টার্মিনাল চালু করুন
  • রুট হিসাবে লগ ইন করতে sudo su টাইপ করুন আপনার পাসওয়ার্ড লিখুন
  • টাইপ করুন vi / লাইব্রেরি / লঞ্চডেমোনস / কম.অ্যাপল.লাঞ্চড.লিমিট.প্লিট
  • ভিআই এডিটারে প্রবেশের পরে, সন্নিবেশ মোডে প্রবেশ করতে i টিপুন এবং তারপরে উপরের সঠিক কোড সামগ্রীটি পেস্ট করুন ( ⌘+v)। এটি প্রতি প্রক্রিয়াতে 16384 ফাইল এবং মোট 16384 ফাইল সীমাবদ্ধ করতে বাধ্য করবে
  • আপনার ফাইলটি সংরক্ষণ করুন এবং escতারপরে ব্যবহারটি ছেড়ে দিন:wq
  • আপনার সিস্টেমটি পুনরায় বুট করুন এবং পরীক্ষা করুন যে এটি কমান্ড লঞ্চক্টল সীমাটি ব্যবহার করে কাজ করছে

আমি আশা করি এটি আপনাকে সাহায্য করেছে


10
পরিবেশের ভেরিয়েবলগুলি নির্ধারণের সাথে এই সমাধানটির কী দরকার?
হেয়ারআফডডগ

2

আপনি https://github.com/ersiner/osx-env-sync ব্যবহার করে দেখতে পারেন । এটি একক উত্স থেকে কমান্ড লাইন এবং জিইউআই অ্যাপ্লিকেশন উভয়ই পরিচালনা করে এবং ওএস এক্স (ইওসোমাইট) এর সর্বশেষতম সংস্করণে কাজ করে ।

আপনি পাথের বিকল্পগুলি এবং অন্যান্য শেল ট্রিকস ব্যবহার করতে পারেন যেহেতু আপনি যা লেখেন তা নিয়মিত বাশ স্ক্রিপ্টটি প্রথমে ব্যাশের দ্বারা উত্সাহিত করা হয়। কোনও বিধিনিষেধ নেই .. ( osx-env-sync ডকুমেন্টেশন পরীক্ষা করে দেখুন এবং এটি কীভাবে এটি অর্জন করবে তা আপনি বুঝতে পারবেন))

আমি এখানে অনুরূপ প্রশ্নের উত্তর দিয়েছি যেখানে আপনি আরও পাবেন।


-3

সমাধানটি হল আপনার ভেরিয়েবলটি এতে যুক্ত করা /etc/profile। তাহলে প্রত্যাশার মতো সবকিছুই কাজ করে! অবশ্যই আপনি এটি sudo ন্যানো / ইত্যাদি / প্রোফাইল সহ একটি রুট ব্যবহারকারী হিসাবে করা উচিত। আপনি যদি অন্য কোনও উপায়ে এটি সম্পাদনা করেন তবে সিস্টেমগুলি ক্ষতিগ্রস্থ / ইত্যাদি / প্রোফাইলের সাথে অভিযোগ করবে, আপনি অনুমতিগুলি রুটে পরিবর্তন করলেও।


7
প্রোফাইলে পরিবেশের ভেরিয়েবল যুক্ত করা খুব নিকৃষ্ট কারণ এটি কেবল শেল প্রক্রিয়াগুলিকেই প্রভাবিত করে।
উলোপ

-5

আমি নিম্নলিখিত উপায়ে vari / .bash_profile এ ভেরিয়েবলগুলি যুক্ত করেছি। আপনার কাজ শেষ হওয়ার পরে পুনরায় চালু / লগ আউট এবং লগ ইন করুন

export M2_HOME=/Users/robin/softwares/apache-maven-3.2.3
export ANT_HOME=/Users/robin/softwares/apache-ant-1.9.4
launchctl setenv M2_HOME $M2_HOME
launchctl setenv ANT_HOME $ANT_HOME
export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/robin/softwares/apache-maven-3.2.3/bin:/Users/robin/softwares/apache-ant-1.9.4/bin
launchctl setenv PATH $PATH

দ্রষ্টব্য: পুনরায় আরম্ভ / লগ আউট এবং লগ ইন না করে আপনি এই পরিবর্তনগুলি ব্যবহার করে প্রয়োগ করতে পারেন;

source ~/.bash_profile

মনে রাখবেন যে আপনাকে লগ আউট এবং পিছনে প্রবেশ করতে হবে না Just উত্স কমান্ড অর্থ উত্স .bash_profile ব্যবহার করুন।
মাইকেল

2
এছাড়াও, এই পদ্ধতির সমস্যাটি হ'ল পরিবেশের ভেরিয়েবলগুলি উপলভ্য হওয়ার আগে আপনাকে এখনও একটি টার্মিনাল খুলতে হবে। প্রথম উত্তরে যা আছে তা করা আরও ভাল যাতে তারা টার্মিনালটি না খালি উপলব্ধ।
মাইকেল

1
এটি স্পটলাইটের মাধ্যমে লোড হওয়া অ্যাপগুলিতে কাজ করে না। stackoverflow.com/questions/135688/…
রসিকা পেরেরা

1
বাশ কনফিগারেশন ফাইলগুলি ব্যবহার সীমিত সাহায্যের কারণ এটি ধরে নিয়েছে যে আপনি যে প্রক্রিয়াটি আপনার প্রভাবিত করার চেষ্টা করছেন সেই পরিবেশের পূর্বপুরুষ হিসাবে আপনি সবসময় পেয়েছেন। স্পটলাইট, ফাইন্ডার, ইমাকস, এক্সকোড, ক্রোনজবস, লঞ্চ করা এজেন্টস, কোনও আইডিই, সোর্স কন্ট্রোল ব্রাউজার ইত্যাদি ইত্যাদি পূর্বপুরুষ হিসাবে বাশ পাবে না। এগুলি ধারাবাহিকভাবে ছড়িয়ে যেতে পারে এমন একমাত্র প্রক্রিয়া চালু হয়।
বেন হাইড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.