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


849

ওএস এক্সে PATH এর মতো পরিবেশের পরিবর্তনশীলগুলি সংশোধন করার উপযুক্ত উপায় কী?

আমি গুগলে কিছুটা তাকিয়েছি এবং সম্পাদনা করতে তিনটি ভিন্ন ফাইল পেয়েছি:

  • জন্য / etc / পাথ
  • ~ / .Profile
  • ~ / .Tcshrc

আমার কাছে এই ফাইলগুলির একটিও নেই এবং আমি নিশ্চিত যে .tcshrc ভুল, কারণ ওএস এক্স এখন ব্যাশ ব্যবহার করে। এই পরিবর্তনকগুলি, বিশেষত PATH কোথায় সংজ্ঞায়িত হয়?

আমি ওএস এক্স ভি 10.5 (চিতাবাঘ) চালাচ্ছি ।


env "switch.1.disabled=true" open -n /Applications/Eclipse.app/একটি নতুন সেট সিস্টেম পরিবেশের সাথে জিইউআই অ্যাপ্লিকেশন চালু করতে।
হং

উত্তর:


652

ব্রুনো ঠিক ট্র্যাক এ আছে। আমি ব্যাপক গবেষণা করেছি এবং আপনি যদি সমস্ত জিইউআই অ্যাপ্লিকেশনগুলিতে উপলব্ধ ভেরিয়েবলগুলি সেট করতে চান তবে আপনার একমাত্র বিকল্প /etc/launchd.conf

দয়া করে মনে রাখবেন যে এনভায়রনমেন্ট.পলিট স্পটলাইটের মাধ্যমে চালু হওয়া অ্যাপ্লিকেশনগুলির জন্য কাজ করে না। এটি স্টিভ সেক্সটন এখানে নথিভুক্ত করেছেন

  1. একটি টার্মিনাল প্রম্পট খুলুন

  2. প্রকার sudo vi /etc/launchd.conf(দ্রষ্টব্য: এই ফাইলটি এখনও বিদ্যমান না থাকতে পারে)

  3. নীচের মতো সামগ্রী ফাইলে রাখুন

    # Set environment variables here so they are available globally to all apps
    # (and Terminal), including those launched via Spotlight.
    #
    # After editing this file run the following command from the terminal to update
    # environment variables globally without needing to reboot.
    # NOTE: You will still need to restart the relevant application (including
    # Terminal) to pick up the changes!
    # grep -E "^setenv" /etc/launchd.conf | xargs -t -L 1 launchctl
    #
    # See http://www.digitaledgesw.com/node/31
    # and http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x/
    #
    # Note that you must hardcode the paths below, don't use environment variables.
    # You also need to surround multiple values in quotes, see MAVEN_OPTS example below.
    #
    setenv JAVA_VERSION 1.6
    setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
    setenv GROOVY_HOME /Applications/Dev/groovy
    setenv GRAILS_HOME /Applications/Dev/grails
    setenv NEXUS_HOME /Applications/Dev/nexus/nexus-webapp
    setenv JRUBY_HOME /Applications/Dev/jruby
    
    setenv ANT_HOME /Applications/Dev/apache-ant
    setenv ANT_OPTS -Xmx512M
    
    setenv MAVEN_OPTS "-Xmx1024M -XX:MaxPermSize=512m"
    setenv M2_HOME /Applications/Dev/apache-maven
    
    setenv JMETER_HOME /Applications/Dev/jakarta-jmeter
  4. Vi এ আপনার পরিবর্তনগুলি সংরক্ষণ করুন এবং আপনার ম্যাকটি পুনরায় বুট করুন। অথবা উপরের কোড মন্তব্যে প্রদর্শিত grep/ xargsকমান্ডটি ব্যবহার করুন ।

  5. আপনার ভেরিয়েবলগুলি টার্মিনাল উইন্ডো এবং টাইপ করে কাজ করছে তা প্রমাণ করুন এবং exportআপনার নতুন ভেরিয়েবলগুলি দেখতে হবে। এগুলি স্পটলাইটের মাধ্যমে আপনার চালু হওয়া ইন্টেলিজ আইডিইএ এবং অন্যান্য জিইউআই অ্যাপ্লিকেশনগুলিতেও উপলব্ধ থাকবে।


3
আমি বলছি যে গৃহীত উত্তর (পরিবেশ.plist) আমার পক্ষে সফল হয়নি। আমি চারটি মেশিনে 10.5 এবং 10.6 এ সফলভাবে লঞ্চডকনফ পদ্ধতিটি ব্যবহার করেছি।
ম্যাথু ম্যাককালু

54
কোনও সিস্টেম পুনরায় বুট না করে এটি করার কোনও উপায় আছে কি ?
sorin

40
উপরে বর্ণিত সীমাবদ্ধতা MacOS এক্স 10.5 এ প্রযোজ্য। তবে ম্যাকোস এক্স 10.6 এর আর এই সীমাবদ্ধতা নেই এবং পরিবেশের ভিতরে মানগুলি সেট করে। প্লেস্ট স্পটলাইটের মাধ্যমে চালু হওয়া অ্যাপ্লিকেশনগুলির জন্যও দুর্দান্ত কাজ করে। সুতরাং নির্বাচিত উত্তরটি স্নো চিতাবাঘের জন্য সঠিক ;-)
লুই জ্যাকমেট

5
সেটিংয়ের launchd.confএকটি উপায়, তবে একটি রিবুট দরকার (পুনরায় চালু করার জন্য)। আপনি যদি একটি রিবুট এড়াতে চান তবে আমার উত্তর দেখুন stackoverflow.com/questions/135688/…
ম্যাট কার্টিস

23
উপস্থাপিত চালু হওয়া পদ্ধতির সাথে বেশ কয়েকটি সমস্যা রয়েছে। বেশিরভাগ PATH এনভায়রনমেন্ট ভেরিয়েবলের সাথে সুনির্দিষ্ট, তবে প্রশ্নকর্তা বিশেষত PATH উল্লেখ করেছিলেন। 1) লঞ্চডনফের আইটেমগুলি সিস্টেমের মধ্যে এসএসএসের মতো ইন্টারেক্টিভ শেলগুলিতে প্রয়োগ হয় না। ২) "Setenv PATH / testdir" লাইনটি টার্মিনাল.এপ-এর প্যাথএইচ-তে যুক্ত হয়, তবে ওএস এক্স অ্যাপ্লিকেশনগুলির পরিবেশে অন্য সমস্ত PATH আইটেম উড়িয়ে দেয়। 3) /etc/launchd.conf এ "setenv PATH {} PATH}: / testdir" করাটি বিদ্যমান $ PATH 4 সঠিকভাবে প্রসারিত করে না) লঞ্চডকনফ কেবল একের পরিবর্তে সমস্ত ব্যবহারকারীর জন্য প্রযোজ্য। আমার আরও ভাল দ্রাবক আছে তা নয়।
নূহআর

257

স্পটলাইট দ্বারা শুরু হওয়া নতুন প্রক্রিয়াগুলির জন্য পরিবেশ কীভাবে সেট করবেন (পুনরায় বুট করার দরকার নেই)

আপনি প্রবর্তিত (এবং এক্সটেনশন দ্বারা, স্পটলাইট থেকে শুরু হওয়া যে কোনও কিছু) ব্যবহার করে পরিবেশ সেট করতে পারেন launchctl setenv। উদাহরণস্বরূপ পথ নির্ধারণ:

launchctl setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin

বা আপনি যদি নিজের পথে .bashrcবা অনুরূপ সেট আপ করতে চান তবে এটি আরম্ভ করে মিরর করুন:

PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
launchctl setenv PATH $PATH

পুনরায় বুট করার দরকার নেই যদিও আপনাকে যদি কোনও অ্যাপ পরিবর্তন করার পরিবেশ বেছে নিতে চান তবে আপনাকে পুনরায় চালু করতে হবে।

এটিতে ইতিমধ্যে টার্মিনাল.এপ এর অধীনে চলমান যে কোনও শাঁস রয়েছে, যদিও আপনি যদি সেখানে থাকেন তবে আপনি পরিবেশকে আরও সরাসরি সেট করতে পারেন, যেমন export PATH=/opt/local/bin:/opt/local/sbin:$PATHবাশ বা zsh সহ।

পুনরায় বুট করার পরে কীভাবে পরিবর্তনগুলি রাখা যায়

পুনরায় বুট করার পরে পরিবর্তনগুলি রাখতে আপনি যেমন পরিবেশের ভেরিয়েবলগুলি সেট করতে /etc/launchd.confপারেন তা:

setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin

launchd.conf আপনি পুনরায় বুট করার সময় স্বয়ংক্রিয়ভাবে কার্যকর করা হয়।

আপনি যদি এই পরিবর্তনগুলি এখনই কার্যকর হতে চান তবে পুনরায় launchctl.confপ্রসেস করার জন্য আপনার এই কমান্ডটি ব্যবহার করা উচিত (টিপটির জন্য ধন্যবাদ @ এমকেলেটের!)

egrep -v '^\s*#' /etc/launchd.conf | launchctl

কমান্ডটি দিয়ে launchctlএটি কীভাবে লোড launchd.confহয় সে সম্পর্কে আপনি আরও জানতে পারবেন man launchctl


2
খুব সুন্দর! যদিও এনভায়রনমেন্ট.পলিট ব্যবহার করার সুবিধাটি মনে হয় যে ওএস এক্স ফাইলগুলির বিষয়বস্তুগুলিকে সম্মান জানায় প্রথমে কোনও টার্মিনাল জ্বালিয়ে দেওয়ার ঝামেলা ছাড়াই। যাইহোক, আমি মনে করি আপনার উত্তরটি মূলত একটি রিবুটের প্রয়োজনীয়তা এড়ানোতে মনোনিবেশ করেছে, তাই এর জন্য THX।
fotNelton

2
@ কেপুজনেইল্লেক্স হ্যাঁ এটি একটি রিবুট এড়িয়ে চলে, এছাড়াও এটি স্পটলাইট থেকে শুরু হওয়া প্রোগ্রামগুলির পরিবেশ পরিবর্তন করে, যা environment.plistতা করে না।
ম্যাট কার্টিস

2
এই পথে পরিবেশ নির্ধারণ করা কেবলমাত্র আমি পুনরায় চালু না করা পর্যন্ত আমার পক্ষে কাজ করে। আমি ম্যাকটি রিবুট করার পরে পরিবেশের পরিবর্তনশীলটি স্থায়ী হয়নি। ম্যাথু এর উত্তর আমার জন্য নিখুঁতভাবে কাজ করে।
শমল করুণারথনে

8
@ শামাল: আমি আপনার মন্তব্যটি +1 করেছি তবে মনে রাখবেন ম্যাথিউয়ের উত্তরটির জন্য একটি রিবুট দরকার , আমি রিবুট ছাড়াই এটিকে পরিবর্তন করার সঠিক উপায়টি নির্দেশ করছি। যদি আপনি উভয়ই চান তবে আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি আপনার পাথের সেটিংসটি লাঞ্চডকনফে রেখেছেন (যাতে তারা পুনরায় বুট চালিয়ে যায়), এবং তারপরে এই "উত্স /etc/launchctl.conf; লঞ্চাক্টেল সেটেনভ PATH $ पथ" এর মতো কিছু সহ একটি স্ক্রিপ্ট ব্যবহার করুন, সুতরাং আপনি যখন রিবুট করতে চান না তখন আপনি "রিফ্রেশ" করতে পারেন।
ম্যাট কার্টিস

5
@ ম্যাটকুর্টিস আপনি কি দয়া করে আপনার উত্তরটি সরাসরি সম্পাদনা করতে পারবেন এটি পরিষ্কার করার জন্য যে কোনও রিবুট প্রয়োজন নেই, পরিবর্তনগুলি আসলে একটি রিবুটের পরে হারিয়ে যাবে ? এছাড়াও, সঠিক ভাবে পরিবর্তনগুলি প্রয়োগ করার জন্য etc/launchd.confজন্য পুনরায় চালু করা মধ্যে @ MatthewMcCullough এর উত্তর পদ্ধতির ব্যবহার করতে হবে আগে: egrep "^setenv\ " /etc/launchd.conf | xargs -t -L 1 launchctl
mklement0

106

এবং সহ OS X এর v10.7 (লায়ন) আপনি তাদের মধ্যে সেট করতে পারেন:

~/.MacOSX/environment.plist

দেখা:

টার্মিনালে প্যাথের জন্য, আপনি সেট করতে সক্ষম হবেন .bash_profileবা .profile(আপনার সম্ভবত এটি তৈরি করতে হবে)

জন্য OS X এর v10.8 (মাউন্টেন লায়ন) এবং তার পরেও আপনি ব্যবহার করতে হবে launchdএবংlaunchctl


4
এটি কেবলমাত্র যদি আপনি গ্রাফিকাল অ্যাপ্লিকেশনগুলির দ্বারা তাদের ব্যবহারের প্রত্যাশা করেন। যেহেতু এগুলি সাধারণত পরিবেশের ভেরিয়েবল ব্যবহার করে না, সেগুলি সেট করার জন্য এটি খুব ভাল জায়গা নয়।
ক্রিস হ্যানসন

18
গ্রাফিকাল অ্যাপসের কয়েকটি খুব ভাল উদাহরণ রয়েছে যা পরিবেশের ভেরিয়েবল ব্যবহার করে। উদাহরণস্বরূপ, ইন্টেলিজ ম্যাভেন কোথায় থাকে তা জানতে এম 2_হোম দেখতে সক্ষম হতে পছন্দ করে। এটি ভেরিয়েবলটি দেখতে পেতে, আপনাকে এটিকে পরিবেশ..লিস্টের পরিবর্তে /etc/launchd.conf এ সেট করতে হবে।
ম্যাথু ম্যাককালফ

3
রেফারেন্সের জন্য: preferences.plistওএস এক্স 10.5 preferences.plistএর সাথে ব্যবহারটি আদর্শের চেয়ে কম ছিল কারণ স্পটলাইটের মাধ্যমে প্রবর্তিত অ্যাপ্লিকেশনগুলির জন্য সেই সময়টি পড়া হয়নি, লুইয়ের ম্যাথিউয়ের উত্তর এবং ইমেল.ইএসএম.এসএস.এসইউ / পিপারমেল / ম্যাকোসেক্স- ইম্যাকস /2010- মাইয়ের মন্তব্য দেখুন /002113.html । ওএস এক্স 10.6 এর জন্য environment.plistঠিক যেমন কাজ করা উচিত।
জানুস


1
@tim_yates আপনি সম্পাদনা আপনার উত্তর পড়তে "উপর থেকে প্রথম লাইন যায়নি সহ লায়ন (10. * 7 *)", প্রদত্ত যে কি সঠিক যে? আমি সেই সম্পাদনাটি মূল, দ্ব্যর্থহীন "আপ টু মাউন্টেন সিংহ" করার চেষ্টা করেছি এবং পর্যালোচকরা এটি খুঁজে পেয়েছে।
mklement0

67

একক উত্স থেকে কমান্ড লাইন এবং জিইউআই অ্যাপ্লিকেশনগুলির সমাধান ( ম্যাক ওএস এক্স ভি 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

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


সুন্দরভাবে কাজ করে। এটি সুরক্ষা ফাঁক হয়ে থাকলে এটি জনপ্রিয় হয়ে উঠলে কিছুটা চিন্তিত
ওয়ারেন পি

3
এই সমাধানটি কেবলমাত্র আমি সঠিকভাবে কাজ করতে পারি। দুর্দান্ত সমাধান। আমি বুঝতে পারি না ম্যাকের জন্য কেন এটি এত কঠিন হওয়া উচিত ...
JohnyTex

2
দুর্ভাগ্যক্রমে এটি এল ক্যাপিটেনে কাজ করে না। Github.com/ersiner/osx-env-sync/issues/1#issuecomment-169803508 থেকে আপনার মন্তব্য সমস্যার ভালভাবে ব্যাখ্যা করেছে।
মিগল

1
সুতরাং, এই সমাধানটি কাজ করে না, /etc/launchd.conf এর কোনও প্রভাব নেই, নোড.জেএস এর বাইনারি / usr / স্থানীয় / বিনে ইনস্টল করে এবং জিইউআই অ্যাপ্লিকেশনগুলির জন্য এই পথটি PATH তে নেই। অতএব, নোড ব্যবহার করে গিট হুকগুলি এল ক্যাপিটেনের সোর্সট্রির মতো জিইউআই গিট অ্যাপগুলিতে কাজ করে না। এটা ভয়ানক।
মিগ্রোল

1
সমস্যাটি কেবল PATH ভেরিয়েবল সম্পর্কে। আমি আশা করি শীঘ্রই আমরা একটি সমাধান খুঁজে পেতে পারি।
এরসিন এর

54
  1. না:

    vim ~/.bash_profile

    ফাইলটির অস্তিত্ব থাকতে পারে (যদি না হয় তবে আপনি এটি তৈরি করতে পারেন)।

  2. এটিতে টাইপ করুন এবং ফাইলটি সংরক্ষণ করুন:

    export PATH=$PATH:YOUR_PATH_HERE
  3. চালান

    source ~/.bash_profile

+1 exportহ'ল আমি যা পরামর্শ দিতে যাচ্ছি, যেহেতু BASH সমর্থন করে নাsetenv
vol7ron

আপাতত কাজ করে। এই পুরো জিনিসটি আমার ধারণা থেকে অনেক জটিল দেখাচ্ছে। পরে এই সমস্তগুলির জন্য আরও কিছুটা সময় উত্সর্গ করতে হবে। ধন্যবাদ।
রুতো কলিন্স

34

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

ডক থেকে প্রোগ্রাম শুরু করার সময়, ~/.MacOSX/environment.plist যেখানে <dict>উপাদানটিতে <key>KEY</key><string>theValue</string>উপাদানগুলির ক্রম থাকে তা ব্যবহার করুন ।

স্পটলাইট থেকে প্রোগ্রাম শুরু করার সময়, নিশ্চিত হয়ে নিন যে আপনার প্রয়োজনীয় সমস্ত কী / মান সেটিংসের সাথে লঞ্চ চালু হয়েছে been

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

বিবরণ:

লগইন আইটেম: ~/bin/macosx-startup

#!/bin/bash
bash -l -c "/Applications/Emacs.app/Contents/MacOS/Emacs --batch -l ~/lib/emacs/elisp/macosx/environment-support.el -f generate-environment"

ইমাস লিসপ ফাংশন: ~/lib/emacs/elisp/macosx/envionment-support.el

;;; Provide support for the environment on Mac OS X

(defun generate-environment ()
  "Dump the current environment into the ~/.MacOSX/environment.plist file."
  ;; The system environment is found in the global variable:
  ;; 'initial-environment' as a list of "KEY=VALUE" pairs.
  (let ((list initial-environment)
        pair start command key value)
    ;; clear out the current environment settings
    (find-file "~/.MacOSX/environment.plist")
    (goto-char (point-min))
    (setq start (search-forward "<dict>\n"))
    (search-forward "</dict>")
    (beginning-of-line)
    (delete-region start (point))
    (while list
      (setq pair (split-string (car list) "=")
            list (cdr list))
      (setq key (nth 0 pair)
            value (nth 1 pair))
      (insert "  <key>" key "</key>\n")
      (insert "  <string>" value "</string>\n")

      ;; Enable this variable in launchd
      (setq command (format "launchctl setenv %s \"%s\"" key value))
      (shell-command command))
    ;; Save the buffer.
    (save-buffer)))

দ্রষ্টব্য: আমার সমাধান যুক্ত করার আগে এই সমাধানটি আগতদের সংমিশ্রণ, বিশেষত ম্যাট কার্টিস প্রস্তাবিত, তবে আমি ইচ্ছাকৃতভাবে আমার ~/.bash_profileসামগ্রীর প্ল্যাটফর্মকে স্বাধীন রাখতে এবং launchdপরিবেশের (একটি ম্যাক সুবিধার্থে) বৈশিষ্ট্যটিকে আলাদা স্ক্রিপ্টে রাখার চেষ্টা করেছি ।


19
কি দারুন. আমি বলছি না এটি কাজ করবে না, তবে ... আমি ওএস এক্সে সামঞ্জস্যপূর্ণ পরিবেশ পেতে প্রয়োজনীয় জটিলতায় কেবল হতবাক হয়েছি
অফবি 1

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

22

আরেকটি, বিনামূল্যে, ওপেনসোর্স, ম্যাক OS X v10.8 (মাউন্টেন লায়ন) অভিরুচি পেন / environment.plist সমাধান EnvPane

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

যেমন বিকাশকারী বলেছেন:

এনভপেন ম্যাক ওএস এক্স ১০.৮ (মাউন্টেন সিংহ) এর একটি অগ্রাধিকার ফলক যা আপনাকে গ্রাফিকাল এবং টার্মিনাল উভয় সেশনে সমস্ত প্রোগ্রামের জন্য পরিবেশের ভেরিয়েবল সেট করতে দেয়। এটি কেবল মাউন্টেন সিংহের ~ / .MacOSX / পরিবেশ.plist এর জন্য সমর্থন পুনরুদ্ধার করে না, এটি পরিবেশে আপনার পরিবর্তনগুলি তাত্ক্ষণিকভাবে প্রকাশ করে, লগ আউট এবং পিছনে প্রবেশের প্রয়োজন ছাড়াই <<এসএনআইপি> এনভপ্যানে একটি (এবং স্বয়ংক্রিয়ভাবে ইনস্টল) এ অন্তর্ভুক্ত করে লঞ্চ করা এজেন্ট যা 1 চালায়) লগইনের পরে এবং 2) যখনই ~ / .MacOSX / পরিবেশ.plist পরিবর্তন হয়। এজেন্ট ~ / .MacOSX / পরিবেশ.plist পড়ে এবং সেই ফাইলটি থেকে বর্তমান ব্যবহারকারীর প্রবর্তিত দৃষ্টান্তে একই API এর মাধ্যমে প্রবর্তন করে যা পরিবেশগত ভেরিয়েবলগুলি প্রবর্তন করে সেঞ্চেভ এবং লঞ্চক্টেল আনসেটেনভ দ্বারা ব্যবহৃত হয়।

দাবি অস্বীকার: আমি কোনওভাবেই বিকাশকারী বা তার প্রকল্পের সাথে সম্পর্কিত নই।

PS আমার নামটি পছন্দ করে ('Ends বেদনার মতো') sounds


2
এনভপেন এই মুহুর্তে PATH সেট করতে পারে না। আরও তথ্যের জন্য আমার বাগের প্রতিবেদনটি দেখুন: github.com/hschmidt/EnvPane/issues/5
Uwe Günther

আমি এই জিনিসটি .. কেবলমাত্র অপূর্ণতা .. যা আমি মনে করি যে কোনও সমাধানই এর শিকার হতে পারে .. এটি হল - একটি প্রক্রিয়া পুনরায় আরম্ভ করা - নতুন "পরিবেশ" এর উত্তরাধিকারী হওয়া। Wonk wink।
অ্যালেক্স গ্রে

2
@ সোরিন: আপনি যে সমস্যার মুখোমুখি হচ্ছেন তার বর্ণনা দিয়ে আপনি কি গিটহাব সাইটে কোনও সমস্যা খুলতে পারবেন? এনভপেন 10.10-এ আমার জন্য কাজ করে। দাবি অস্বীকার: আমি এনভপেনের লেখক।
হ্যানস

17

আপডেট (2017-08-04)

(কমপক্ষে) ম্যাকোএস 10.12.6 (সিয়েরা) হিসাবে এই পদ্ধতিটি অ্যাপাচি httpd (উভয় systemএবং userবিকল্প উভয়ের জন্য launchctl config) এর জন্য কাজ করা বন্ধ করে দিয়েছে বলে মনে হচ্ছে । অন্যান্য প্রোগ্রামগুলি প্রভাবিত বলে মনে হচ্ছে না। অনুমানযোগ্য যে এটি httpd এ একটি বাগ।

আসল উত্তর

এটি ওএস এক্স 10.10+ সম্পর্কিত (10.11+ বিশেষত রুটলেস মোডের কারণে যেখানে /usr/binএখন আর লেখার যোগ্য নয়) concerns

আমি একাধিক জায়গায় পড়েছি যে ওএসএল বাগের (যা ব্যক্তিগত অভিজ্ঞতা থেকে সত্য বলে মনে হয়) ভেরিয়েবল launchctl setenv PATH <new path>সেট করতে ব্যবহার করা কার্যকর PATHহয় না। আমি দেখেছি যে শেল থেকে লঞ্চ না করা অ্যাপ্লিকেশনগুলিরPATH জন্য আরও একটি উপায় সেট করা যেতে পারে :

sudo launchctl config user path <new path>

এই বিকল্পটি প্রবর্তনকারী ম্যান পৃষ্ঠাতে নথিভুক্ত করা হয়েছে:

কনফিগারেশন সিস্টেম | ব্যবহারকারীর পরামিতি মান

প্রবর্তিত (8) ডোমেনের জন্য অবিরাম কনফিগারেশন তথ্য সেট করে। কেবলমাত্র সিস্টেম ডোমেন এবং ব্যবহারকারী ডোমেনগুলি কনফিগার করা যেতে পারে। অবিরাম স্টোরেজের অবস্থানটি একটি প্রয়োগের বিশদ, এবং সেই স্টোরেজটিতে পরিবর্তনগুলি কেবলমাত্র এই সাবকম্যান্ডের মাধ্যমে করা উচিত। এই সাবকম্যান্ডের মাধ্যমে কার্যকর হওয়া পরিবর্তনের জন্য একটি রিবুট প্রয়োজন।

[...]

পথ

টার্গেট ডোমেনের মধ্যে থাকা সমস্ত পরিষেবার জন্য PATH পরিবেশ পরিবর্তনশীলকে স্ট্রিংয়ের মানতে সেট করে। স্ট্রিংয়ের মানটি পরিবেশ (7) এ PATH এনভায়রনমেন্ট ভেরিয়েবলের জন্য বর্ণিত বিন্যাসের সাথে সামঞ্জস্য করা উচিত। নোট করুন যে কোনও পরিষেবা তার নিজস্ব PATH নির্দিষ্ট করে দিলে পরিষেবা-নির্দিষ্ট পরিবেশের পরিবর্তনশীল অগ্রাধিকার গ্রহণ করবে।

দ্রষ্টব্য: এই সুবিধাটি ডোমেনের মধ্যে থাকা সমস্ত পরিষেবার জন্য সাধারণ পরিবেশের ভেরিয়েবল সেট করতে ব্যবহার করা যাবে না। এটি ইচ্ছাকৃতভাবে PATH পরিবেশের পরিবর্তনের যোগ্য এবং সুরক্ষার কারণে অন্য কিছুই নয়।

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


এটি আমার পক্ষেও কাজ করে। sudo launchctl procinfo <gui-pid>নতুন সেট PATHপরিবেশ প্রদর্শন। তবে sudo launchctl config user path <new path>প্রকৃতপক্ষে সমস্ত ব্যবহারকারীর জন্য সেট করা হয়েছে ... (নতুন ব্যবহারকারী যুক্ত করে এবং
সাব্লাইম

1
এটি লগইন-এ পুনরায় খোলা অ্যাপ্লিকেশনগুলির PATH পরিবেশের পরিবর্তনশীলের উপর প্রভাব ফেলেছে বলে মনে হচ্ছে না (যা বন্ধ করার সময় খোলা ছিল)।
ব্রেচ্ট ম্যাচিলস

মজাদার. এর অর্থ হ'ল অ্যাপ্লিকেশনগুলির জন্য যেগুলি পরিবেশ পুনরায় খোলা হবে (বা এর একটি উপসেট) সংরক্ষণ করা হচ্ছে।
ম্যাক্স লেস্কে

@ ম্যাক্সলেস্কে না, পরিবেশ পরিবর্তনশীল পরিবর্তনের আগে পুনরায় খোলা অ্যাপ্লিকেশনগুলি শুরু করা হচ্ছে। সুতরাং, এটি করার পরে এটি প্রথমবার নয়, এটি sudo launchctl config user pathঘটেছিল (যা আপনি মনে করছেন বলে মনে হয়?)।
ব্রেচ্ট ম্যাচিয়েলস

1
@ShlomiSchwartz launchctlনেই না আপনি নির্বিচারে বিভিন্ন পরিবেশের সেট করার অনুমতি দেয়। PATHপরিবর্তনশীল একটি ব্যতিক্রম নয়।
ম্যাক্স লেসেক

17

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


3
এই সমাধানটি সিস্টেমে সর্বনিম্ন হস্তক্ষেপের মান পূরণ করে। ধন্যবাদ।
জন ভ্যানস

@ জন ভ্যানস +1 সম্পূর্ণরূপে সম্মত হন, জেসন টি। মিলার তার উত্তরে স্পষ্ট ব্যাখ্যা করেছেন বলে সিস্টেম-ব্যাপী পরিবর্তনগুলি সর্বদা ঝুঁকিপূর্ণ
rmcharry

5
এল ক্যাপ্টেনে এটির আমার কোনও প্রভাব নেই। :(
মিগল

হাই সিয়েরা 10.13 এ, আমি যদি অ্যাপ্লিকেশনটির Info.plistফাইলটি সংশোধন করি তবে অ্যাপ্লিকেশনটি লোড হতে ব্যর্থ হয়:LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Slack.app.
কুঞ্জভাই

16

এখানে উত্তরগুলি "ভুল" না হলেও আমি আরও যুক্ত করব: ওএস এক্সে পরিবেশের পরিবর্তনশীল পরিবর্তনগুলি কখনই না ঘটায় যা "সমস্ত প্রক্রিয়াগুলি" বা এমনকি শেলের বাইরেও প্রভাবিত করে, সমস্ত প্রক্রিয়া প্রদত্ত ব্যবহারকারীর দ্বারা ইন্টারেক্টিভভাবে চালিত হয়।

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

এই ক্ষেত্রে ওএস এক্স অন্যান্য ইউএনআইএক্স-এর মতো অপারেটিং সিস্টেমের (যেমন, লিনাক্স, ফ্রিবিএসডি, এবং সোলারিস) চেয়ে আলাদা নয়; অ্যাপল এটির জন্য সহজ উপায় সরবরাহ না করার সর্বাধিক কারণ হ'ল কারণ এটি জিনিসগুলি ভেঙে দেয় । উইন্ডোজ এই সমস্যাগুলির মতো প্রবণতা নয়, এটি দুটি জিনিসের কারণে রয়েছে: (১) উইন্ডোজ সফ্টওয়্যার কমান্ড-লাইন সরঞ্জামগুলির উপর নির্ভর করে না যতটা ইউএনআইএক্স সফ্টওয়্যার করে, এবং (২) মাইক্রোসফ্টের "ডিএলএল হেল্ক" এবং সুরক্ষার সমস্যাগুলির উভয়েরই বিস্তৃত ইতিহাস যা পরিবর্তনের ফলে ঘটে যা সমস্ত প্রক্রিয়াগুলিকে প্রভাবিত করে যে তারা নতুন উইন্ডোজ সংস্করণগুলিতে প্যাথের মতো "গ্লোবাল" কনফিগারেশন বিকল্পগুলির প্রভাবকে সীমাবদ্ধ করতে ডায়নামিক লোডিংয়ের আচরণকে পরিবর্তন করেছে।

"খোঁড়া" বা না, আপনি যদি আরও ছোট স্কোপে এই পরিবর্তনগুলি সীমাবদ্ধ করেন তবে আপনার কাছে আরও স্থিতিশীল সিস্টেম থাকবে।


লোকেরা কীভাবে তারা জিজ্ঞাসা করেছিল যে কাজটি করবেন না তা তাদের জিজ্ঞাসা করা প্রশ্নের উত্তর নয়। লোককে এটি করা থেকে বিরত রাখা জিনিসগুলিও ভঙ্গ করে। অ্যাপলের মোডাস অপারেন্ডি।
উদ্ভট

/ অ্যাপ্লিকেশনস / অ্যাপ্লিকেশন / অ্যাপ্লিকেশন / অ্যাপ্লিকেশনগুলিতে এলএএসএনভায়রনমেন্ট কী কী বিকাশকারী / ইনফো.পিস্টে PATH নির্ধারণ করা বর্তমান প্রস্তাবিত সমাধান হতে পারে।
ডেভ এক্স

15

কখনও কখনও পূর্ববর্তী সমস্ত উত্তর কেবল কার্যকর হয় না। আপনি যদি M2_HOMEEclipse বা IntelliJ IDEA তে কোনও সিস্টেম ভেরিয়েবলের (যেমন ) অ্যাক্সেস পেতে চান তবে এই ক্ষেত্রে আমার পক্ষে কাজ করা একমাত্র জিনিস:

প্রথমে (পদক্ষেপ 1) এর /etc/launchd.confমতো লাইন ধারণ করতে সম্পাদনা করুন : "সেটেভ ভিএআর মান" এবং তারপরে (পদক্ষেপ 2) পুনরায় বুট করুন।

কেবলমাত্র .bash_ প্রোফাইলে সংশোধন করা কার্যকর হবে না কারণ ওএস এক্স-এ অ্যাপ্লিকেশনগুলি অন্য ইউনিক্সের মতো শুরু হয় নি; তারা পিতামাতার শেল ভেরিয়েবলের উত্তরাধিকারী হয় না। অন্যান্য সমস্ত পরিবর্তনগুলি আমার অজানা কারণের জন্য কাজ করবে না। হয়তো অন্য কেউ এ সম্পর্কে স্পষ্ট করতে পারেন।


5
অ্যাপ্লিকেশনগুলি স্পটলাইট থেকে শুরু হয়েছে বা অন্য যে কোনও উপায়ে সমস্ত তাদের / পিতামাতার প্রক্রিয়া দ্বারা /etc/launchd.conf পড়েছে, এইভাবে এটি সমস্ত অ্যাপ্লিকেশন এবং শেলগুলিতে পরিবেশের পরিবর্তনশীলগুলি কোথায় সেট করা যায় তার জন্য একটি আকর্ষণীয় পছন্দ।
ম্যাথু ম্যাককালফ

1
আর একটি সমাধানের জন্য আমার উত্তর দেখুন, যা একটি রিবুট এড়ায়
ম্যাট কার্টিস

আমার ম্যাকসএস 10.6 মেশিনে /etc/launchd.conf ফাইল উপস্থিত নেই। এই সংস্করণ হিসাবে এটি হয় একটি নতুন বা অপ্রচলিত জিনিস? নাকি এই যন্ত্রটি গণ্ডগোল করছে?
পিটার্ক

13

এনভায়রনমেন্ট ভেরিয়েবলের অগ্রাধিকার ফলকটি তাড়িয়ে দেওয়ার পরে এবং লিঙ্কটি নষ্ট হয়ে গেছে এবং অ্যাপলের সাইটে অনুসন্ধানে মনে হয় যে তারা এটিকে ভুলে গিয়েছিল ... আমি ফিরে পেয়েছিলাম অধরা লঞ্চ প্রক্রিয়াটির ট্রেইলে।

আমার সিস্টেম (Mac OS X এর 10.6.8) উপর যে ভেরিয়েবল environment.plist সংজ্ঞায়িত হচ্ছে হয় নির্ভরযোগ্যভাবে (launchd মাধ্যমে) স্পটলাইট থেকে চালু অ্যাপস রপ্তানি করা হচ্ছে। আমার সমস্যাটি হ'ল সেই সমস্ত ভার্সনগুলি টার্মিনালের নতুন বাশ সেশনে রফতানি করা হচ্ছে না। অর্থাৎ এখানে চিত্রিত হিসাবে আমার বিপরীত সমস্যা আছে।

দ্রষ্টব্য: এনভায়রনমেন্ট.প্লেস্টটি পূর্বে বর্ণিত হিসাবে এক্সএমএল নয়, জেএসওনের মতো দেখাচ্ছে

আমি স্পটলাইট অ্যাপ্লিকেশনগুলি see / ম্যাকোএসএক্স / এনভায়রনমেন্ট.পালিস্ট সম্পাদনা করে ওয়ারগুলি দেখতে সক্ষম হয়েছি এবং আমি আমার প্রোফাইলে ফাইলটিতে নিম্নলিখিতগুলি যুক্ত করে একটি নতুন টার্মিনাল সেশনে একই ভারগুলি জোর করতে সক্ষম হয়েছি:

eval $(launchctl export)


লঞ্চাক্টেল রফতানি সম্পর্কে দুর্দান্ত টিপ। তবে আমি এটি প্রফাইলে রাখি না। এটি আপনার AT PATH কে এমন একের সাথে ওভাররাইট করবে যাতে এতে / usr / স্থানীয় / বিন অন্তর্ভুক্ত থাকে না। তবে আপনি যে আগ্রহী ওয়ার্সগুলি বেছে নিতে চান তা বেছে নিতে আপনি একটি রেজেক্স ব্যবহার করতে পারেন: `` eval $ (প্রবর্তক এক্সপোর্ট | গ্রেপ '^ আমার। * =')।
mivk

3
আমার নতুন মাউন্টেন লায়ন মেশিনে (10.8.2) এনভায়রনমেন্ট.প্লেস্ট সম্পূর্ণ মূল্যহীন। সঠিক ট্র্যাকের জন্য ম্যাথিউয়ের উত্তর দেখুন। এটি সমস্ত চালু এবং /etc/launchd.conf সহ লঞ্চাক্টেল কমান্ড-লাইন অ্যাপ সম্পর্কিত। আপনি নিজেকে দিয়ে পড়তে পারেন man launchd, man launchctlএবং man launchd.confএকটি টার্মিনাল উইন্ডো। খুশি অ্যাপল ম্যান ডেভেলপার লাইব্রেরিটি কিছুটা পিছিয়ে থাকলেও ম্যান পৃষ্ঠাগুলি আপ টু ডেট রাখে।
রাসেল বি

10

ব্যাশ প্রারম্ভকালে ফাইল থাকে - আপনাকে ~/.bashrc, ~/.bash_profile, ~/.profile~/.MacOSX/environment.plistজিইউআই অ্যাপ্লিকেশনগুলিতে পরিবেশের ভেরিয়েবলের জন্য এক ধরণের অদ্ভুত ফাইলের নামও রয়েছে ।


10

ম্যাট কার্টিস যে উত্তরটি দিয়েছিল, তার মতোই আমি লঞ্চক্টেলের মাধ্যমে পরিবেশের ভেরিয়েবলগুলি সেট করেছিলাম, তবে আমি এটিকে এক্সপোর্ট নামে একটি ফাংশনটিতে গুটিয়ে রাখি, যাতে যখনই আমি আমার .bash_profile এ স্বাভাবিকের মতো কোনও ভেরিয়েবল রফতানি করি তবে এটিও লঞ্চক্টেল দ্বারা সেট করা হয়। আমি যা করি তা এখানে:

  1. আমার .বাশ_ প্রোফাইলটি কেবলমাত্র এক লাইনের সমন্বয়ে গঠিত (এটি কেবল ব্যক্তিগত পছন্দ)

    source .bashrc
  2. আমার .bashrc এ আছে:

    function export()
    {
        builtin export "$@"
        if [[ ${#@} -eq 1 && "${@//[^=]/}" ]]
        then
            launchctl setenv "${@%%=*}" "${@#*=}"
        elif [[ ! "${@//[^ ]/}" ]]
        then
            launchctl setenv "${@}" "${!@}"
        fi
    }
    
    export -f export
  3. উপরেরগুলি বাশ বিল্টিন "রফতানি" ওভারলোড করবে এবং সমস্ত কিছু সাধারণত রফতানি করবে (আপনি এটি দিয়ে "রফতানি" রফতানি করব!), তবে আপনি নীচের যে কোনওটি ব্যবহার করেন কিনা তা লঞ্চটেলের মাধ্যমে ওএস এক্স অ্যাপ পরিবেশের জন্য যথাযথভাবে সেট করুন:

    export LC_CTYPE=en_US.UTF-8
    # ~$ launchctl getenv LC_CTYPE
    # en_US.UTF-8
    PATH="/usr/local/bin:${PATH}"
    PATH="/usr/local/opt/coreutils/libexec/gnubin:${PATH}"
    export PATH
    # ~$ launchctl getenv PATH
    # /usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
    export CXX_FLAGS="-mmacosx-version-min=10.9"
    # ~$ launchctl getenv CXX_FLAGS
    # -mmacosx-version-min=10.9
  4. এইভাবে আমাকে প্রতিবার পরিবর্তনশীল প্রবর্তন করতে হবে না এবং আমি আমার .bash_profile / .Bashrcটিকে আমার পছন্দ মতো সেট আপ করতে পারি। একটি টার্মিনাল উইন্ডো খুলুন, আপনার পরিবেশের ভেরিয়েবলগুলি যা আপনার আগ্রহী launchctl getenv myVarতা পরীক্ষা করে দেখুন, আপনার .bash_profile / .Bashrc- এ কিছু পরিবর্তন করুন, টার্মিনাল উইন্ডোটি বন্ধ করুন এবং এটি আবার খুলুন, আরম্ভ করে লঞ্চেক্টল দিয়ে ভেরিয়েবলটি পরীক্ষা করুন, এবং এটি পরিবর্তন হয়েছে।

  5. আবার, পর্বত সিংহ পরবর্তী বিশ্বের অন্যান্য সমাধানগুলির মতো, অ্যাপ্লিকেশনগুলির জন্য কোনও নতুন পরিবেশের ভেরিয়েবল উপলব্ধ হওয়ার জন্য, আপনাকে পরিবর্তনের পরে সেগুলি চালু করতে বা পুনরায় চালু করতে হবে।


1
দরকারী উত্তর - ধন্যবাদ। আমি কেবল এটি আপডেট করেছি কারণ আপনার আসল সমাধানের ক্ষেত্রে যে পরিবেশের পরিবর্তনশীলটির মান আপনি সেট করেছিলেন তার মানগুলির মধ্যে এটির সমান চিহ্ন রয়েছে (যেমন, সিএক্সএক্স_এফএলএজি = "- এমএম্যাকসেক্স-সংস্করণ-মিনিট = 10.9"
স্টিভ ব্রবার্গ

@ স্টিভব্রোবার্গ - কেবলমাত্র একটি চরিত্রের পরিবর্তন বদলের প্রয়োজন ছাড়াই বাশ রিজেক্সেপ ঠিক করে দিয়েছে! (আমাকে ভুল করবেন না, আমি সেডকে ভালবাসি তবে এটি কাজ করে এবং এটি খুব কম হয়))
কোর্টল্যান্ডজ

1
আমি বুঝতে পেরেছিলাম সেখানে আরও ভাল উপায় হতে হবে তবে আমি কোনও গুরু গুরু নই, এবং আমি কোন%%, ## ইত্যাদি গুগল করতে পারি না
স্টিভ ব্রবার্গ

10

আপনি যা চান তা করার জন্য এখানে একটি খুব সহজ উপায়। আমার ক্ষেত্রে এটি কাজ করার জন্য গ্র্যাডল পাচ্ছিল (অ্যান্ড্রয়েড স্টুডিওর জন্য)।

  • টার্মিনাল খুলুন।
  • নিম্নলিখিত কমান্ড চালান:

    sudo nano /etc/paths অথবা sudo vim /etc/paths

  • অনুরোধ করা হলে আপনার পাসওয়ার্ড লিখুন.

  • ফাইলের নীচে যান এবং আপনি যে পথটি যুক্ত করতে চান তা প্রবেশ করুন।
  • হিট Control+X প্রস্থান করার জন্য।
  • পরিবর্তিত বাফার সংরক্ষণ করতে 'ওয়াই' লিখুন।
  • একটি নতুন টার্মিনাল উইন্ডো খুলুন তারপর টাইপ করুন:

    echo $PATH

আপনার পথের শেষের দিকে যুক্ত হওয়া নতুন পথটি দেখতে হবে।

আমি এই পোস্ট থেকে এই বিবরণ পেয়েছি:

ম্যাক ওএস এক্স ১০.৮ মাউন্টেন সিংহ এবং তার উপরের রাস্তায় যুক্ত করুন



7

প্রতিটি ফাইলের উদ্দেশ্যে কী সে সম্পর্কে সংক্ষিপ্ত এবং স্পষ্ট হওয়া

  • ~/.profile টার্মিনাল.এপ চালু হওয়ার সাথে সাথেই এটি তৈরি করা হয়
  • ~/.bashrc যেখানে "traditionতিহ্যগতভাবে" বাশ পরিবেশের জন্য সমস্ত রফতানি বিবৃতি সেট করা আছে
  • /etc/paths ম্যাক ওএসের প্রধান ফাইল যা সমস্ত ব্যবহারকারীর জন্য PATH পরিবেশ পরিবর্তনশীল তৈরির জন্য ডিফল্ট পাথের তালিকা রয়েছে
  • /etc/paths.d/ অতিরিক্ত অনুসন্ধানের পাথ ধারণ করে এমন ফাইল রয়েছে

নন-টার্মিনাল প্রোগ্রামগুলি আপনার টার্মিনালের মতো সিস্টেমের প্রশস্ত PATH এবং MANPATH ভেরিয়েবলের উত্তরাধিকারী হয় না! নির্দিষ্ট ব্যবহারকারী দ্বারা প্রবর্তিত সমস্ত প্রক্রিয়াগুলির জন্য পরিবেশ নির্ধারণ করার জন্য, এইভাবে ম্যাক ওএস এক্স জিইউআই অ্যাপ্লিকেশনগুলিতে পরিবেশের ভেরিয়েবলগুলি উপলভ্য করে, সেই ভেরিয়েবলগুলি অবশ্যই আপনার সংজ্ঞায়িত করতে হবে~/.MacOSX/environment.plist (অ্যাপল টেকনিক্যাল প্রশ্নোত্তর কিউএ 1067) এ

আপনার environment.plistসাথে সিঙ্ক্রোনাইজ করতে নিম্নলিখিত কমান্ড লাইনটি ব্যবহার করুন /etc/paths:

defaults write $HOME/.MacOSX/environment PATH "$(tr '\n' ':' </etc/paths)"

6

/etc/launchd.conf OS X v10.10 (Yosemite), OS X v10.11 (এল ক্যাপিটান), macOS v10.12 (সিয়েরা), বা macOS v10.13 (উচ্চ সিয়েরা) ব্যবহার করা হয় না।


থেকে launchctlমানুষ পৃষ্ঠা:

/etc/launchd.conf file is no longer consulted for subcommands to run during early boot time;
this functionality was removed for security considerations.

এটি জিজ্ঞাসা করুন ভিন্ন জবাবগুলিতে বর্ণিত পদ্ধতিটি আমার জন্য কাজ করে (একটি রিবুটের পরে): ডক থেকে বা স্পটলাইট থেকে শুরু করা অ্যাপ্লিকেশনগুলি আমি সেট করে থাকা পরিবেশের পরিবর্তনশীলগুলির উত্তরাধিকারী ~/Library/LaunchAgents/my.startup.plist। (আমার ক্ষেত্রে, আমি সেট করা প্রয়োজন LANG, এর en_US.UTF-8, একটি সাবলাইম টেক্সট প্লাগইনের জন্য।)


পুনরায় বুট করার পরে এমন কোনও লোড অর্ডার পাওয়া যায় যা নিশ্চিত করে যে গত সেশন থেকে অ্যাপ্লিকেশনগুলি পুনরায় শুরু করার আগে আমার.স্টার্টআপ.পালিস্টটি লোড করা যেত?
কুঞ্জভাই

5

$PATHপরিবর্তনশীল এছাড়াও সাপেক্ষে path_helper, যেটা ঘুরে ফিরে তোলে ব্যবহারের /etc/pathsফাইল এবং ফাইল /etc/paths.d

চিতাবাঘের PATH এবং অন্যান্য পরিবেশ সংক্রান্ত সমস্যার আরও বিশদ বিবরণ পাওয়া যাবে (২০০৮-১১)


3

ইহা সাধারণ:

~ /। প্রোফাইলটি সম্পাদনা করুন এবং আপনার ভেরিয়েবলগুলি অনুসরণ করুন

$ vim ~ /। প্রোফাইল ile

ফাইল লাগাতে:

MY_ENV_VAR = মান

  1. সংরক্ষণ করুন::

  2. টার্মিনালটি পুনরায় চালু করুন (প্রস্থান করুন এবং এটি আবার খুলুন)

  3. নিশ্চিত হয়ে নিন যে সব ঠিক আছে:

$ প্রতিধ্বনি $ MY_ENV_VAR

। মান



3

একটি একক ব্যবহারকারী পরিবর্তনের জন্য, ব্যবহার করুন ~/.profile আপনি তালিকাভুক্ত । বাশ যখন বিভিন্ন ফাইলগুলি পড়বে তখন নিম্নলিখিত লিঙ্কটি ব্যাখ্যা করে।

http://telin.ugent.be/~slippens/drupal/bashrc_and_others

আপনি যদি গি অ্যাপ্লিকেশনগুলির জন্য পরিবেশ পরিবর্তনশীল সেট করতে চান তবে আপনার ~ / .MacOSX / পরিবেশ.plist ফাইলটি দরকার


3

ঠিক আছে, আমি /etc/pathsএবং সম্পর্কে সম্পর্কে অনিশ্চিত~/.MacOSX/environment.plist ফাইল ফাইল । এগুলি নতুন।

তবে বাশের সাথে, আপনার জানা উচিত যে .bashrcপ্রতিটি নতুন শেল আহ্বানের সাথে এবং তা কার্যকর করা হয়.bash_profile এটি একবার প্রারম্ভকালে একবার কার্যকর করা হয়।

আমি জানি না যে ম্যাক ওএস এক্স এর সাথে এটি প্রায়শই হয় I

ব্যক্তিগতভাবে, আমি .bashrcআমার যা প্রয়োজন তার সবকটি ফাইল তৈরি করে বিভ্রান্তি দূর করি:

ln -s .bashrc .bash_profile

3

প্রস্তাবিত পদ্ধতির পাশাপাশি একটি বিষয় লক্ষণীয়: ওএস এক্স 10.5 (চিতাবাঘ) এ অন্তত সেট করা ভেরিয়েবলগুলি launchd.confসেটিংসের সাথে সংযুক্ত করা হবে .profile। আমি মনে করি এটি সম্ভবত সেটিংসের ~/.MacOSX/environment.plistজন্যও বৈধ হতে পারে তবে আমি যাচাই করি নি।


3

ম্যাক ওএসে আপনার PATH পরিবেশ পরিবর্তনশীল সেট আপ করুন

টার্মিনাল প্রোগ্রামটি খুলুন (এটি ডিফল্টরূপে আপনার অ্যাপ্লিকেশন / ইউটিলিটি ফোল্ডারে রয়েছে)। নিম্নলিখিত কমান্ড চালান

touch ~/.bash_profile; open ~/.bash_profile

এটি আপনার ডিফল্ট পাঠ্য সম্পাদকটিতে ফাইলটি খুলবে।

উদাহরণস্বরূপ অ্যান্ড্রয়েড এসডিকে জন্য:

আপনার অ্যান্ড্রয়েড এসডিকে প্ল্যাটফর্ম-সরঞ্জাম এবং সরঞ্জাম ডিরেক্টরিতে আপনাকে পথটি যুক্ত করতে হবে। আমার উদাহরণে আমি "/ ডেভলপমেন্ট / অ্যান্ড্রয়েড-এসডিকে-ম্যাকোসেক্স" ব্যবহার করব এসডিকে যে ডিরেক্টরিটি ইনস্টল করা হয়েছে সে হিসাবে এটি ব্যবহার করুন following নিম্নলিখিত লাইনটি যুক্ত করুন:

export PATH=${PATH}:/Development/android-sdk-macosx/platform-tools:/Development/android-sdk-macosx/tools

ফাইলটি সংরক্ষণ করুন এবং পাঠ্য সম্পাদকটি প্রস্থান করুন। আপনার PATH আপডেট করতে আপনার .bash_ প্রোফাইলে চালিত করুন:

source ~/.bash_profile

এখন প্রতিবার আপনি যখন টার্মিনাল প্রোগ্রাম খুলবেন তখন আপনার PATH এ অ্যান্ড্রয়েড এসডিকে অন্তর্ভুক্ত করবে।


3

কেবল এটিই সহজ এবং দ্রুত করেছেন। টার্মিনাল থেকে প্রথমে একটি। / .Bash_profile তৈরি করুন :

touch .bash_profile

তারপর

open -a TextEdit.app .bash_profile

যোগ

export TOMCAT_HOME=/Library/Tomcat/Home

ডকুমেন্ট সংরক্ষণ করুন এবং আপনার কাজ শেষ হয়েছে।


Perfecto থেকে। আমি জাভাএহোমের জন্য পদক্ষেপগুলি অনুসরণ করেছি, সবেমাত্র রফতানি যুক্ত করলাম জাভাওহোম = / লাইব্রেরী / জাভা / জাভা ভার্চুয়ালম্যাচাইনস / জেডিকি 1.8.0_201.jdk / সূচি / হোম এবং বাস্তব দ্রুত সাফল্য!
নরেন্দ্রসি

দুর্দান্ত @ নরেন্দ্রসি!
CodeOverRide

2

এটা বেশ সহজ। ফাইল .profile(vi, ন্যানো , সাব্লাইম টেক্সট বা অন্যান্য পাঠ্য সম্পাদক) ফাইল সম্পাদনা করুন। আপনি এটি ~/ডিরেক্টরিতে (ব্যবহারকারী ডিরেক্টরি) এবং এটির মতো সেট করতে পারেন set

export MY_VAR=[your value here]

জাভা বাড়ির সাথে উদাহরণ:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/current

এটি সংরক্ষণ করুন এবং টার্মিনালে ফিরে আসুন।

আপনি এটি দিয়ে পুনরায় লোড করতে পারেন:

source .profile

অথবা আপনার টার্মিনাল উইন্ডোটি বন্ধ এবং খুলুন।


2

এখানে খেলতে দুটি ধরণের শেল রয়েছে।

  • লগইনবিহীন: প্রতিবার আপনি নতুন কপি শুরু করার সময় .bashrc পুনরায় লোড হবে
  • লগইন: আপনি যখন লগইন করেন, বা স্পষ্টভাবে বাশকে এটি লোড করতে এবং এটি লগইন শেল হিসাবে ব্যবহার করার সময়। প্রোফাইলটি লোড করা হয়।

এখানে এটি বোঝা গুরুত্বপূর্ণ যে বাশের সাথে ফাইলটি .bashrcকেবল এমন শেল দ্বারা পঠিত হয় যা ইন্টারেক্টিভ এবং অ-লগইন উভয়ই থাকে এবং আপনি দেখতে পাবেন যে লোকেরা প্রায়শই এই সীমাবদ্ধতা কাটিয়ে উঠতে লোড .bashrcকরে .bash_profile

এখন আপনার কাছে প্রাথমিক বোধগম্যতা রয়েছে, আসুন আমরা কীভাবে এটি সেট আপ করার পরামর্শ দেব to

  • । প্রোফাইল: এটি অ-বিদ্যমান। সেখানে আপনার পাঠ সেটআপ করুন।
  • .bashrc: অ-বিদ্যমান থাকলে তৈরি করুন। আপনার সমস্ত উপাধি এবং কাস্টম পদ্ধতি সেখানে রাখুন।
  • .বাশ_ প্রোফাইল: অ-বিদ্যমান থাকলে তৈরি করুন create সেখানে নিম্নলিখিত রাখুন।

.bash_file:

#!/bin/bash
source ~/.profile # Get the PATH settings
source ~/.bashrc  # Get Aliases and Functions
#

2

লগইন শেলস

/etc/profile

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

.bash_profile
.bash_login
.profile

পরবর্তী জন্য শেল সৌন্দর্য ~/.bash_profile, ~/.bash_loginএবং ~/.profile, যাতে, এটা খুঁজে বের করে এই ফাইলগুলির প্রথম কমান্ড নির্বাহ (~ / আপনার home ডিরেক্টরির জন্য স্বল্প হাত)। আপনি সেট করা ডিফল্টগুলিকে ওভাররাইড করতে এই ফাইলগুলির একটির মধ্যে কমান্ড রাখতে পারেন /etc/profile। ভার্চুয়াল টার্মিনালে চলমান একটি শেল এই ফাইলগুলিতে কমান্ড প্রয়োগ করে না।

.bash_logout

আপনি যখন লগ আউট করবেন, তখন bash কমান্ড প্রয়োগ করে exec ~/.bash_logout ফাইলটিতে । এই ফাইলটি প্রায়শই একটি কমান্ড ধারণ করে যা একটি সেশনের পরে পরিষ্কার হয়, যেমন অস্থায়ী ফাইলগুলি সরিয়ে দেয়।

ইন্টারেক্টিভ ননলগিন শেলস

/etc/bashrc

যদিও সরাসরি বাশ দ্বারা ডাকা হয়নি, অনেকগুলি ~/.bashrcফাইল কল করে /etc/bashrc। এই সেটআপটি রুট সুবিধাগুলি সহ কাজ করা কোনও ব্যবহারকারীকে ননলগিন ব্যাশ শেলের জন্য সিস্টেমওয়াইড ডিফল্ট বৈশিষ্ট্যগুলি প্রতিষ্ঠিত করতে সহায়তা করে।

.bashrc

একটি ইন্টারেক্টিভ ননলগিন শেল ~/.bashrcফাইলটিতে কমান্ড প্রয়োগ করে । সাধারণত লগইন শেলের জন্য একটি স্টার্টআপ ফাইল যেমন .bash_profileএই ফাইলটি চালায় তাই লগইন এবং ননলগিন শেল উভয়ই কমান্ড চালায় .bashrc

যেহেতু কমান্ডগুলি .bashrcবহুবার কার্যকর করা হতে পারে, এবং সাব-শেলগুলি রফতানযোগ্য ভেরিয়েবলের উত্তরাধিকারী হওয়ায় .bash_profileফাইলটিতে বিদ্যমান কমান্ডগুলি যুক্ত করার জন্য কমান্ডগুলি রাখা ভাল ধারণা ।


2

আইওএসের সমস্ত যাদু কেবল sourceফাইলের সাহায্যে ব্যবহার করা যায় , যেখানে আপনি আপনার পরিবেশের ভেরিয়েবলগুলি রফতানি করে।

উদাহরণ স্বরূপ:

আপনি এই জাতীয় একটি ফাইল তৈরি করতে পারেন:

export bim=fooo
export bom=bar

এই ফাইলটি সংরক্ষণ করুন bimbom.envএবং করুন source ./bimbom.ev। হ্যাঁ, আপনি আপনার পরিবেশের পরিবর্তনশীল পেয়েছেন।

তাদের সাথে পরীক্ষা করুন:

echo $bim

1

বাশের জন্য, ফাইলটি আপনার পরিবেশের ভেরিয়েবলগুলি /etc/profileসমস্ত ব্যবহারকারীর জন্য উপলব্ধ করার জন্য এটিকে যুক্ত করে দেখুন। পুনরায় বুট করার দরকার নেই, কেবল একটি নতুন টার্মিনাল সেশন শুরু করুন।

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