ম্যাভারিক্সে সিস্টেম-ব্যাপী PATH পরিবেশের পরিবর্তনশীল সেট করা হচ্ছে


41

পূর্ববর্তী ওএস সংস্করণগুলিতে /etc/launchd.confএটি সমস্ত অ্যাপ্লিকেশনের জন্য উপলব্ধ করার জন্য সিস্টেম-প্রশস্ত PATH পরিবেশ পরিবর্তনশীল সেট করতে পারে (কেবলমাত্র কমান্ড লাইন নয়)।

ম্যাভারিক্সে এটি আর ব্যবহার করা হবে না বলে মনে হয়।

ম্যাভারিক্সে এটি করার জন্য কি অন্য কৌশল আছে?

উত্তর:


50

ইয়োসেমাইট

/etc/launchd.conf10.10 এ আর সমর্থিত নয়। দেখুন man launchctl:

/Etc/launchd.conf ফাইলটি আরম্ভের বুটের সময় সাব-কম্যান্ডগুলি চালানোর জন্য আর পরামর্শ করা হয় না; সুরক্ষা বিবেচনার জন্য এই কার্যকারিতাটি সরানো হয়েছিল।

আপনি এখন উদাহরণস্বরূপ এই plist সংরক্ষণ করতে পারেন ~/Library/LaunchAgents/my.startup.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>my.startup</string>
  <key>ProgramArguments</key>
  <array>
    <string>sh</string>
    <string>-c</string>
    <string>launchctl setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
</dict>
</plist>

launchctl setenvকমান্ড ব্যবহারকারী হিসাবে দৌড়ে তাই এটি শুধুমাত্র ব্যবহারকারী ডোমেন সালে চালু প্রসেস ক্ষেত্রে প্রযোজ্য।

এই পদ্ধতিটি "অ্যাপ্লিকেশনগুলিতে প্রযোজ্য না যা লগইনে পুনরায় খোলা হয় যদি" ​​আবার লগ ইন করার সময় উইন্ডো পুনরায় খুলুন "পরীক্ষা করা হয়।

ম্যাভেরিক্স এবং তার আগের

10.9 এবং তার আগে, আপনি উদাহরণস্বরূপ রান করতে পারেন

echo setenv PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin|sudo tee -a /etc/launchd.conf

এবং তারপরে পরিবর্তনগুলি প্রয়োগ করতে পুনরায় চালু করুন।

অন্যান্য পদ্ধতি

/etc/pathsএবং /etc/paths.d/শেলগুলিতে কেবল (বা মূলত) প্রয়োগ করুন। লাইন /etc/pathsএবং /etc/paths.d/*দ্বারা পাথ যোগ করা হয় path_helper , যা থেকে চালানো হয় /etc/profile, /etc/zshenvএবং /etc/csh.login। আমি শেল ছাড়া অন্য কোনও প্রোগ্রাম জানি না যা বিবেচনা করে /etc/pathsবা /etc/paths.d/

~/.MacOSX/environment.plist 10.8 তে কাজ করা বন্ধ করে দিয়েছে।


2
হাঁ; এটি কেবলমাত্র ডিফল্টরূপে বিদ্যমান নেই তবে এটি তৈরি করা এবং সঠিক এন্ট্রিগুলি সেট করা সহায়তা করে
মিলাগল

ইয়োসেমাইটে, আমি দেখেছি যে কিছু প্রোগ্রাম পাইথনপথ দেখে না বলে মনে হচ্ছে, যা আমি /etc/launchd.conf এ সেট করেছি এবং আমি আপনার কমান্ড লাইন ফিক্স (আপনার উত্তরের ২ য় অনুচ্ছেদ) ব্যবহার করেছি এবং এটি কার্যকর বলে মনে হচ্ছে না , এটি কেবল আমাকে প্রবর্তন ত্রুটি / সহায়তা বার্তা দেয়।
ট্যাঙ্গো

@ ট্যাঙ্গো আমি উত্তর সম্পাদনা করেছি। /etc/launchd.conf10.10-এ সরানো হয়েছে।
Lri

আমি এটি যোগ করব যে আমার অভিজ্ঞতা, বাশ নিয়ে ঘুরে দেখার সময়, এটি হল, ১০.১০-তে, লঞ্চক্টেল সেটেনভ কিছুই করতে পারে বলে মনে হচ্ছে না। আমি এনভির ভেরিয়েবলগুলি সেট করার চেষ্টা করেছি, তারপরে ইকো সহ মানটি পরীক্ষা করেছিলাম এবং সেগুলি এখনও অপরিবর্তিত।
ট্যাঙ্গো

1
@ ট্যাঙ্গো প্রস্থান করুন এবং চালানোর পরে আপনার টার্মিনাল অ্যাপ্লিকেশনটি আবার খুলুন launchctl setenvlaunchctl setenvবিদ্যমান প্রক্রিয়াগুলিকে কখনও প্রভাবিত করেনি।
Lri

11

আরও অনেক সহজ উপায় আছে। ফোল্ডারে একটি পাঠ্য ফাইল রাখুন /etc/paths.d/। এই পাঠ্য ফাইলে, পছন্দসই পাথ এবং একটি নতুন লাইন প্রবেশ করুন। সর্বোত্তম উপায় হ'ল প্রতিটি পথের জন্য একটি নতুন ফাইল তৈরি করা।

আমার সিস্টেমে মাইএসকিউএল নামে একটি ফাইল রয়েছে যেখানে '/ usr / লোকাল / মাইএসকিএল / বিন' টেক্সট এবং একটি নতুন লাইন রয়েছে।


@ লৌরিরন্তের বর্ণিত দুর্বলতা দূর করার উপায় আছে কিনা তা সম্পর্কে আমি একটি নতুন প্রশ্ন পোস্ট করেছি ।
কুজ্জুরো

কেবলমাত্র একটি অ্যানাকডোট: আমি এই পদ্ধতিটিও ব্যবহার করেছি, কারণ এটি প্রস্তাবিত "ওএস এক্স উপায়"। আমার কাছে /etc/paths.d তে থাকা PATH ফাইলগুলি ধারাবাহিকভাবে সম্মান করার মতো সিস্টেমের ভাগ্য আমি পাইনি এবং সাধারণত রপ্তানি শেল কমান্ডটি ব্যবহার করে বা আমার PATH গুলি ~ / .Bash_profile এ রেখে যা সর্বদা কাজ করে, যদি কেবলমাত্র আমার বর্তমান ব্যবহারকারীর অ্যাকাউন্টের জন্য এবং সিস্টেম-বিস্তৃত নয়। যদি /etc/paths.d এ প্যাথ ফাইলগুলি সর্বদা আপনার জন্য কাজ করে তবে আমি jeর্ষা বোধ করি যে আপনার সিস্টেমটি আমার চেয়ে ভাল আচরণ করছে;)
চিলিন

এটি আমার জন্য নতুন। নিস!
মামাতো ভাই কোকেন

3

আপনি ফাইলটিতে পরিবেশের ভেরিয়েবল সেট করতে সক্ষম হতে পারেন /etc/launchd-user.conf...

ম্যাভেরিক্সে, আমি লাইনটি ব্যবহার করে ফাইলটিতে একটি পরিবেশের পরিবর্তনশীল কনফিগার করতে সক্ষম হয়েছি:

setenv TEST test

একটি নতুন বুট পরে, $TEST/etc/launchd-user.conf থেকে সেট করা আছে।

সম্পাদন করা

এটা সম্ভব যে /etc/launchd.conf এ ফাইলটির বাক্য গঠনটি অবৈধ। আপনি কি সেই ফাইলের বিষয়বস্তু পরীক্ষার জন্য পোস্ট করতে পারেন?

আমি যা দেখছি তা থেকে /etc/launchd.conf এ PATH ভেরিয়েবলটি সেট করা স্বাভাবিকভাবে কাজ করছে। তবে launchdকোনও প্যারামিটার বিস্তৃতি সম্পাদন করে না । অতএব, যদি আপনার মতো এন্ট্রি থাকে তবে setenv PATH $PATH:/usr/local/binআপনার ফলস্বরূপ পাথ " $PATH:/usr/local/bin" এ সেট করা হবে (দ্রষ্টব্য: PATH এর মান নয় , তবে "$ PATH" পাঠ্যটি)


ধন্যবাদ, আমি যে সমস্যাটি করছি তা হ'ল PATH নির্ধারণ করছে, অন্যান্য পরিবেশের ভেরিয়েবলগুলি কাজ করছে বলে মনে হচ্ছে।
টম

@ টম - আমি উপরে একটি অতিরিক্ত পরামর্শ প্রদান করেছি
এডি কেলি

1
এটি কি সত্যিই লঞ্চ-ইউজার.কম বা লঞ্চ- [বর্তমান_ ব্যবহারকারী_নাম]
.কনফ

'সেটেভ টেস্ট টেস্ট' সমেত /etc/launchd.conf আমার ম্যাভেরিক্সে টার্মিনালে প্রচার করে না।
ডেভ এক্স

ওফস: এস / ম্যাভেরিক্স / ইয়োসেমাইট /।
ডেভ এক্স

0

আমার ম্যাভেরিক্স ইনস্টল করে, /etc/launchd.conf এ "setenv PATH ব্লাবলাবালা" যুক্ত করে পুনরায় বুট করার পরে কাজ হয়নি

সুতরাং আমি আমার নতুন পথটি / ইত্যাদি / পাথের শেষে যুক্ত করেছি, যা কাজ করেছে।


এটি আমার পক্ষে কাজ করে না। আমি রিবুট করেছি, /etc/pathsআমার চাই সমস্ত কিছু রয়েছে এবং এখনও সাব্লাইম কেবলমাত্র মূল প্যাথটিকেই দেখে। যদি আমি এটি টার্মিনাল থেকে চালাই তবে এটি কাজ করে।
মিগজল

আমার / ইত্যাদি / প্রোফাইলে পাথ_হেল্পার কমান্ডটি / etc / পাথ এবং /etc/paths.d ব্যবহার করে যে কোনও PATH ওভাররাইট করতে /etc/launchd.conf দ্বারা নির্ধারিত হতে পারে
ডেভ এক্স

0

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

এটি সরাসরি চালু শেল স্ক্রিপ্টগুলির জন্য এটি ঠিক করার জন্য, আমি PATH সেটিংটি নকল করেছি ~/.bash_profile


0

সম্পাদনা /etc/paths.dবা ব্যবহার .bash_profileআমার পক্ষে কাজ করেনি, তবে অন্য কারও পরামর্শ অনুসারে (আমি আসলে তার উত্তরটি উঁচু করার জন্য এখানে এসেছি, কিন্তু আমি এটি আবার খুঁজে পেলাম না!!), আমি সম্পাদনা করেছি /etc/pathsযা আমার পক্ষে কাজ করে

আমার ক্ষেত্রে, আমি অ্যান্ড্রয়েড-সরঞ্জাম adbএবং androidটার্মিনাল কমান্ডগুলিতে তাদের এসডিকে পাথগুলি নির্দেশ করে ( adbআজকাল অন্য ডিরেক্টরিতে চলে এসেছি ) যা দেখতে দেখতে

/usr/local/bin
...
/Applications/adt-bundle-mac/sdk/platform-tools  //new entries
/Applications/adt-bundle-mac/sdk/tools

0

সোয়েট, XML কে ~ / লাইব্রেরি / LaunchAgents / setenv.SVN.plist এ যুক্ত করে বিবিইডিটকে আমার / অপ্টে ইনস্টল করা সাবভার্সন বাইনারিগুলি ব্যবহার করার অনুমতি দেয়।

<clip>
<string>launchctl setenv PATH /opt/subversion/bin:$PATH</string>
<clip>

1
এই ফাইলটি প্যারামিটার সম্প্রসারণ সমর্থন করে কিনা তা নির্ধারণ করার কোনও ধারণা? আমি হয়ত পথটি সেট করে রেখেছি যাতে অন / অপ্টটি একমাত্র একমাত্র। এবং আমি ভাবছি যে সম্ভবত এটি AT पथ ব্যবহার করে সমর্থন করে না। আপনি কীভাবে বিদ্যমান পথটি শুরু করবেন তা নির্ধারণ করবেন?
এম

-1

আপনার 'বিন' (আপনি যে পথটি যুক্ত করতে চান) / / ইত্যাদি / পাথ ফাইলগুলিতে কেবল যুক্ত করুন - পুনরায় বুট করুন বা পুনরায় লগইন করুন !!!

sudo vi /etc/paths 
(create a file (paths file) if it does't exist, I am using 'vi' editor, you can use your own as super user )
then, add your bin directory path like below 

/usr/local/mysql/bin
/usr/local/apache-ant-1.9.3/bin
/usr/local/gradle-1.11/bin

ফাইলটি সংরক্ষণ করুন এবং পুনরায় প্রবেশ করুন ... আশা করি এটি সাহায্য করবে helps

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