macos - ওএস এক্স এ পরিবেশ ভেরিয়েবল সেটিং




bash path (20)

একক উত্স থেকে কমান্ড লাইন এবং GUI অ্যাপ্লিকেশানের জন্য সমাধান (জোসেমাইট এবং এল ক্যাপিটানের সাথে কাজ করে)

আসুন আপনার অনুমান করুন যে আপনার নীচের স্নিপেটের মতো আপনার ~/.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"

আমাদের একটি লঞ্চ এজেন্ট দরকার যা প্রতিটি লগইন এবং যে কোন সময় ব্যবহারকারীর সেশনে এই ভেরিয়েবলগুলি লোড করার জন্য চলবে। এই সংজ্ঞাগুলি বিশ্লেষণ করতে এবং এজেন্ট দ্বারা কার্যকর হওয়া প্রয়োজনীয় আদেশগুলি তৈরি করতে আমাদের একটি শেল স্ক্রিপ্ট দরকার।

নীচের বিষয়বস্তু সহ ~/Library/LaunchAgents/ ডিরেক্টরিতে ~/Library/LaunchAgents/ সহ একটি ফাইল তৈরি করুন (উদাহরণস্বরূপ osx-env-sync.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>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 প্রথম স্থানে সোর্স করা হয়।

এখন, শেল স্ক্রিপ্ট। নিম্নলিখিত সামগ্রী সহ ~/.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

(পুনরায়) একটি GUI অ্যাপ্লিকেশন চালু করুন এবং এটি যাচাই করুন যে এটি পরিবেশের ভেরিয়েবলগুলি পড়তে পারে।

সেটআপ স্থায়ী হয়। এটা restarts এবং relogins বেঁচে থাকবে।

প্রাথমিক সেটআপের পরে (যা আপনি ঠিক করেছেন), যদি আপনি আপনার পুরো পরিবেশে আপনার ~/.bash_profilelaunchctl load ... কোনও পরিবর্তন প্রতিফলিত করতে চান তবে launchctl load ... পুনরায় 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

পরিশেষে নিশ্চিত করুন যে আপনি তাদের ইতিমধ্যে চলমান অ্যাপ্লিকেশানগুলি (Terminal.app সহ) পুনরায় লোকেশন পরিবর্তনগুলি সম্পর্কে তাদের সচেতন করতে।

আমি এখানে একটি GitHub প্রকল্পে কোড এবং ব্যাখ্যাগুলিকে push করেছি: osx-env-sync

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

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

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

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

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

আমি OS X v10.5 (চিতাবাঘ) চলমান করছি।


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

আপনি launchctl setenv মাধ্যমে launchctl setenv (এবং, 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

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

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

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

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

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

আপনি reboot যখন launchd.conf স্বয়ংক্রিয়ভাবে মৃত্যুদন্ড কার্যকর করা হয়।

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

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

আপনি launchctl এবং কমান্ড man launchctl সাথে launchd.conf লোড কিভাবে লোড করতে পারেন সে সম্পর্কে আরও জানতে পারেন।


ম্যাক ওএস এ আপনার প্যাথ এনভায়রনমেন্ট ভেরিয়েবল সেটআপ করুন

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

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

আপনাকে আপনার Android SDK প্ল্যাটফর্ম-সরঞ্জাম এবং সরঞ্জাম ডিরেক্টরিতে পথ যুক্ত করতে হবে। আমার উদাহরণে SDK ইনস্টল করা ডিরেক্টরি হিসাবে "/ development / android-sdk-macosx" ব্যবহার করব। নিচের লাইনটি যোগ করুন:

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

ফাইলটি সংরক্ষণ করুন এবং পাঠ্য সম্পাদকটি ছেড়ে দিন। আপনার PATH আপডেট করার জন্য আপনার .bash_profile এক্সিকিউট করুন।

source ~/.bash_profile

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


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

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

মূল উত্তর

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

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

sudo launchctl config user path <new path>

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

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

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

[...]

পথ

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

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

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


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

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

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

একযোগে উভয় সমস্যা সমাধানের জন্য, আমি আমার ব্যবহারকারী অ্যাকাউন্টে একটি লগইন আইটেম (সিস্টেম পছন্দসই সরঞ্জামের মাধ্যমে সেট) ব্যবহার করি। লগইন আইটেমটি একটি ব্যাশ স্ক্রিপ্ট যা একটি Emacs lisp ফাংশনকে আহ্বান করে, যদিও অবশ্যই এটি একই জিনিসটি সম্পন্ন করতে তাদের পছন্দের স্ক্রিপ্টিং সরঞ্জাম ব্যবহার করতে পারে। এই পদ্ধতিতে যে সুবিধাটি রয়েছে তা যে কোনো সময়ে কাজ করে এবং পুনরায় বুট করার প্রয়োজন হয় না, অর্থাত্ ~/.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"

Emacs lisp ফাংশন: ~/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 পরিবেশের সেটিং স্থাপন করার চেষ্টা করেছি (কেবলমাত্র একটি Mac ) একটি পৃথক স্ক্রিপ্ট মধ্যে।


আরেকটি, ফ্রি, ওপেনসোর্স, ম্যাক ওএসএক্স মাউন্টেন লায়ন (10.8) পছন্দসই প্যানেল / পরিবেশ। EnvPane সমাধানটি EnvPane

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

হিসাবে বিকাশকারী দ্বারা বিবৃত:

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

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

পিএস আমি নাম পছন্দ করি ('শেষ ব্যথা' মত শোনাচ্ছে)।


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

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

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

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


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

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

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


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

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

  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://.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 করে কাজ করছে এবং আপনার নতুন ভেরিয়েবলগুলি দেখতে হবে। এছাড়াও স্পটলাইটের মাধ্যমে আপনি ইন্টেলিজ আইডিএএ এবং অন্যান্য GUI অ্যাপ্লিকেশনগুলি চালু করতে পারবেন।


মাউন্টেন সিংহ সব /etc/paths এবং /etc/launchd.conf সম্পাদনা কোন প্রভাব গ্রহণ করে না!

অ্যাপল এর বিকাশকারী ফোরাম বলেছে:

"আপনি চান পরিবেশগত ভেরিয়েবল সঙ্গে একটি" LSEnvironment "অভিধান ধারণ করতে .app এর info.plist পরিবর্তন করুন।

~ /। MacOSX / environment.plist আর সমর্থিত নয়। "

তাই আমি সরাসরি অ্যাপের Info.plist সম্পাদনা Info.plist (ডানদিকে "AppName.app" এ ক্লিক করুন (এই ক্ষেত্রে সোর্সTree) এবং তারপরে " 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-[email protected]/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>

(দেখুন: অ্যাপল এ LaunchServicesKeys ডকুমেন্টেশন )

এখন অ্যাপ (আমার ক্ষেত্রে SourceTree) প্রদত্ত পথ ব্যবহার করে এবং গিট দিয়ে কাজ করে 1.9.3 :-)

PS: অবশ্যই আপনি আপনার নির্দিষ্ট পাথ প্রয়োজন পাথ এন্ট্রি সামঞ্জস্য করতে হবে।


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

~/.MacOSX/environment.plist

দেখুন:

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

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


লগইন শেল

/etc/profile

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

.bash_profile 
.bash_login 
.profile

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

.bash_logout

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

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

/etc/bashrc

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

.bashrc

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

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


ইহা সাধারণ:

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

$ ভিআইএম ~ /। প্রোফাইল

ফাইল রাখা:

MY_ENV_VAR = মান

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

  2. টার্মিনালটি পুনরায় চালু করুন (ছেড়ে দিন এবং আবার খুলুন)

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

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

$ মান


এখানে খেলা দুটি শেল আছে।

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

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

এখন আপনি মৌলিক বোঝার আছে, এটি সেট আপ করতে হবে কিভাবে আমি এগিয়ে যেতে হবে।

  • .profile: এটি অ বিদ্যমান তৈরি করুন। সেখানে আপনার প্যাথ সেটআপ রাখুন।
  • .bashrc: অ বিদ্যমান থাকলে তৈরি করুন। সেখানে আপনার সমস্ত Aliases এবং কাস্টম পদ্ধতি রাখুন।
  • .bash_profile: অ বিদ্যমান থাকলে তৈরি করুন। সেখানে নিম্নলিখিত রাখুন।

.bash_file:

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

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

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

নন-টার্মিনাল প্রোগ্রামগুলি আপনার সিস্টেমে বিস্তৃত প্যাথ এবং ম্যানপ্যাথ ভেরিয়েবলের উত্তরাধিকারী নয়! একটি নির্দিষ্ট ব্যবহারকারী দ্বারা চালু সমস্ত প্রসেসের জন্য পরিবেশ সেট করতে, এইভাবে ম্যাক ওএস এক্স GUI অ্যাপ্লিকেশনগুলিতে পরিবেশের ভেরিয়েবলগুলি তৈরি করা, সেই ভেরিয়েবলগুলি আপনার ~/.MacOSX/environment.plist(Apple অ্যাপলিকাল Q & A QA6767) সংজ্ঞায়িত করা আবশ্যক।

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

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

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

আরো পুঙ্খানুপুঙ্খ বর্ণনা এখানে পাওয়া যাবে: http://hea-www.harvard.edu/~fine/OSX/path_helper.html


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

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

ম্যাক ওএস এক্স এর সাথে কত ঘন ঘন এটি আমি জানি না। আমি মনে করি উইন্ডোজ সিস্টেম সবকিছু দিয়ে ভাস্কর্যটি ভেঙ্গে গেছে।

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

ln -s .bashrc .bash_profile

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

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

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


প্রস্তাবিত পন্থাগুলির পাশাপাশি নোট করার একটি বিষয় হল যে, OS X v10.5 (চিতাবাঘ) অন্তত, সেট করা ভেরিয়েবলগুলি launchd.confসেটিংসের সাথে একত্রিত হবে .profile। আমি এই সেটিংস জন্য বৈধ হতে পারে বলে ~/.MacOSX/environment.plistমনে হয়, কিন্তু আমি যাচাই করা হয় নি।


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





environment-variables