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


101

আমি ওএস এক্স-এর বিশ্বব্যাপী প্যাথ পরিবেশের পরিবর্তনশীলটিতে যুক্ত করতে চাই যাতে সমস্ত ব্যবহারকারীর শেল এবং জিইউআই অ্যাপ্লিকেশন একই প্যাথ পরিবেশ পায়।

আমি জানি আমি শেল স্টার্টআপ স্ক্রিপ্টগুলিতে পাথ সংযোজন করতে পারি তবে সেগুলি সেটিংস জিইউআই অ্যাপ্লিকেশনগুলির দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত হয় না।

আমি এখনও অবধি খুঁজে পাওয়া একমাত্র উপায় হ'ল /etc/launchd.conf এ PATH পরিবেশের পরিবর্তনশীলটিকে নতুন করে সংজ্ঞায়িত করা :

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path

আমি আসলে PATH এ যুক্ত হওয়ার উপায় খুঁজে পাইনি launchd.conf

আমি এই পদ্ধতিটি সম্পর্কে কিছুটা চিন্তিত, তবে এখনও পর্যন্ত এটি কেবল কাজ করে। একটি ভাল উপায় আছে কি?



2
ইয়োসেমাইট জন্য এবং পরে দেখুন stackoverflow.com/questions/25385934/...
thSoft

এখানে উত্তরগুলির কোনওটিই ওপি-র প্রশ্নের সমাধান করে না। তবে থসফট দ্বারা মন্তব্য এখানে অর্থের উপর সঠিক! হতে পারে এটি একীভূত হওয়া উচিত বা সেই রেফারেন্সযুক্ত প্রশ্নের সাথে যুক্ত করা উচিত: stackoverflow.com/questions/25385934/…
কেভিন বুচস

উত্তর:


71

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

উদাহরণস্বরূপ, আমার সিস্টেমে:

$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ ls /etc/paths.d
X11       git      postgres
$ cat /etc/paths.d/postgres
/Library/PostgreSQL/8.4/bin
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/PostgreSQL/8.4/bin:/usr/X11/bin:/usr/local/mysql/bin

1
সুন্দর ধন্যবাদ! দ্রষ্টব্য: এটির কাজ করার আগে আপনাকে লগ আউট এবং লগ ইন করতে হবে।
ওয়ার্নিকা

@ অ্যারোনিকা: আমি দেখেছি এটি ছাড়ার এবং পুনরায় চালু করার জন্য যথেষ্ট X11(সম্পূর্ণরূপে লগ আউট করার চেয়ে কম বেদনাদায়ক)। আমি এটি চেষ্টা করিনি Terminal
পিটার গ্লাক

আমি টার্মিনালটি উল্লেখ করছিলাম - আপনি ঠিক বলেছেন, আমি উল্লেখ করতে ভুলে গেছি।
ওয়ারোনিকা

8
এটি জেনে রাখা ভাল, তবে জিপিআইয়ের অ্যাপ্লিকেশনগুলিতে এই প্রক্রিয়াটি প্রযোজ্য না বলে এটি ওপি-র প্রশ্নের উত্তর দেয় না। ওপি একটি খুঁজছেন ছিল ইউনিফাইড সমাধান তাঁর করতে পারবেন যোগ ডিফল্টে $PATH
এমকিলেমেন্ট

আপনি এখানে "আমার সিস্টেম" বলতে কী বোঝেন, @ কগজি? আমরা সবাই কি এখানে ওএস এক্স ব্যবহার করছি না? দুঃখিত তবে আমি ওএস এক্সে নতুন I'm আমি ওএস এক্স 10.7 ব্যবহার করছি
এরিকন

48

/etc/launchd.conf

launchd.confফাইল ** শুধুমাত্র সম্পূর্ণ সমাধান যে উভয় কমান্ড লাইন এবং GUI এপ্লিকেশন জন্য কাজ করবে OS X এর v10.8 (মাউন্টেন লায়ন) এবং v10.9 সকল ব্যবহারকারীর জন্য, (মাভারিক্স), এক যে গুই এবং কনসোল অ্যাপ্লিকেশন সঙ্গে কাজ করবে ।

sudo touch /etc/launchd.conf
sudo nano /etc/launchd.conf

যোগ

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

উপরের উদাহরণে আমি /usr/local/binপ্যাথের জন্য ডিফল্ট পরিবেশ মানগুলিতে যুক্ত করেছি।

মনে রাখবেন যে এই ফাইলটি কোনও স্ক্রিপ্ট নয় এবং আপনার বিকল্প ব্যবহার করার বিকল্প নেই। এছাড়াও, এগুলি প্রয়োগ করতে আপনাকে পুনরায় বুট করতে হবে।

মনে রাখবেন, অন্য সমস্তগুলি কেবল আংশিক সমাধান:

  • environment.plist স্পটলাইটের মাধ্যমে চালু হওয়া অ্যাপ্লিকেশনগুলির জন্য কাজ করে না।
  • /etc/paths - শুধুমাত্র কনসোলের জন্য
  • /etc/csh.cshrcবা /etc/bashrc- কেবল কয়েকটি শাঁসের জন্য

এই উত্তরটি ম্যাক ওএস এক্সে পরিবেশের ভেরিয়েবলগুলি সেট করা থেকে একই প্রশ্নের ভিত্তিতে ।


7
দুর্দান্ত সন্ধান, তবে প্রশ্নটি ইতিমধ্যে চালু হওয়ার বিষয়ে কথা বলে এবং এতে কীভাবে যুক্ত হবে সে সম্পর্কে জিজ্ঞাসা করছে।
ক্রেগোক্স

21
আপনি কি সত্যই নিজেকে "আসল উত্তর" হিসাবে দেখিয়ে মূল প্রশ্নের সাথে একটি মন্তব্য যুক্ত করেছেন?
টিজে লুওমা

7
এটি আপনার - সহায়ক - জবাব দিয়ে বোঝানো হয়েছে, তবে কেবল এটি বানান করেই: ডিফল্ট পাথের সাথে সংযুক্ত করার জন্য ওপি-র ইচ্ছাটি সমর্থন করে না, কারণ আপনি অন্যান্য পরিবেশের পরিবর্তনগুলি উল্লেখ করতে পারবেন না /etc/launchd.conf
এমকিলেমেন্ট

এটি বৈশ্বিক নয় - কমান্ড লাইন পরিবেশটি এটিকে বাতিল করবে যখন / ইত্যাদি / প্রোফাইল পথ_থেল্পকে কল করে এবং / etc / পাথ এবং /etc/paths.d/ থেকে PATH পুনর্নির্মাণ করে
ডেভ এক্স

1
আপেল.স্ট্যাকেক্সেঞ্জঞ্জ / প্রশ্নগুলি ১০০6৩৫৫/২ অনুসারে, এটি যোসোমাইট বা তার পরের জন্য বেশি দিন কাজ করে না
এরিকন

7

আপনাকে এটিকে শেল-বাই-শেল ভিত্তিতে সেট করতে হবে; ব্যাশ এবং সিএস-জাতীয় শেলগুলি PATH সামঞ্জস্য করার জন্য একই কনফিগারেশন ফাইল এবং সিনট্যাক্স ভাগ করে না।

এটি করার চেষ্টা করা কার্যকর launchctlহবে না, কারণ পরিবেশের ভেরিয়েবলগুলি লগইনে সেট করা আছে; শেল সেশনের বাইরে ইউনিক্সে এগুলির ব্যবস্থা নেই।

সুতরাং আপনি যুক্ত করতে চাইছেন

setenv PATH "$PATH:/add/my/extra/path"

যাও /etc/csh.cshrcএবং

export PATH="$PATH:/more/paths:/

to /etc/bashrc

আপনি যদি জিইউআই অ্যাপ্লিকেশনগুলিতে পরিবেশ পরিবর্তনশীল চান তবে এটি আরও জটিল। আপনাকে .MacOSX/environment.plistপ্রতিটি ব্যবহারকারীর হোম ডিরেক্টরিতে একটি ফাইল তৈরি করতে হবে। .MacOSXডিরেক্টরি সম্ভবত ডিফল্টরূপে থাকবে না, তাই আপনি এটি তৈরি করতে হবে।

ফাইলটির ফর্ম্যাটটি এর মতো:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

    <key>PRINTER</key>
    <string>myprinter</string>

    <key>PATH</key>
    <string>/path/to/thing/I/need</string>

    <key>DISPLAY</key>
    <string>0:1</string>

</dict>
</plist>

আরো environment.plist অ্যাপলের সাইটে হয়


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

সত্যি? আপনি সেখানে পরিবেশের পরিবর্তনশীল স্থাপন করছেন?
পামার

1
ওএস এক্স ১০.৮ হিসাবে কেবলমাত্র একটি আপডেট: ~/.MacOSX/environment.plistপদ্ধতির আর সমর্থন নেই এবং ব্যবহারকারীর পর্যায়ে বিকল্প নেই। সিস্টেম-ব্যাপী আপনি ব্যবহার করতে পারেন /etc/launchd.conf(এবং এতে প্রতি - * অ্যাপ্লিকেশন সমাধান রয়েছে)।
এমকিলেমেন্ট

ওপির প্রশ্নের উত্তর দেয় না।
কেভিন

3

/etc/pathsপ্রতি বিশ্বরেখায় এক পথতে লাইন যুক্ত করে আপনি আপনার বিশ্বপথটি সম্পাদনা করতে পারেন ।

sudo nano /etc/paths তোমাকে সেখানে পৌঁছে দেওয়া উচিত


2
এটি জেনে রাখা ভাল, তবে জিপিআইয়ের অ্যাপ্লিকেশনগুলিতে এই প্রক্রিয়াটি প্রযোজ্য নয় এমনটি ওপি-র প্রশ্নের উত্তর দেয় না।
এমকিলেমেন্ট


1

আমি নিশ্চিত না যে কেউ সহজতম এবং মার্জিত উপায়ে covered েকে রেখেছে কিনা । কমপক্ষে ম্যাক ওএস এক্স ভি 10.6 (স্নো চিতাবাঘ) এ।

সঙ্গে তালগোল পাকানো [/etc/|~/.]এর [profile|bashrc]ফাইল কাজ করতে পারে, কিন্তু এটি একটি হ্যাক এর কিছুটা আছে। /etc/paths.d/ডিরেক্টরি যেতে উপায়:

  • আপনার প্রিয় সম্পাদক হিসাবে সুডো।
  • প্রতি লাইনে একটি পথ সহ একটি নতুন ফাইল তৈরি করুন *name*(কেবলমাত্র এর মধ্যে এমন কিছু আছে যা ইতিমধ্যে এটির নাম রাখবেন না) /etc/paths.d/:

    /usr/X11/bin
    /Developer/usr/bin
    
  • তারপর যোগ

    eval '/usr/libexec/path_helper -s`
    

    থেকে profileবা bashrc, এবং আপনি ভাল হওয়া উচিত যান।


1
এটি জেনে রাখা ভাল, তবে জিপিআইয়ের অ্যাপ্লিকেশনগুলিতে এই প্রক্রিয়াটি প্রযোজ্য নয় এমনটি ওপি-র প্রশ্নের উত্তর দেয় না।
এমকিলেমেন্ট

ফাইলের নামটি কি আক্ষরিক অর্থে *name*? না মানে name?
পিটার মর্টেনসেন

0

লঞ্চ যদি এটি গ্রহণ করে তবে আমি নিশ্চিত নই, তবে চেষ্টা করুন:

setenv পাঠ "AT পথ: / আমার / পথ"

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

0

আপনি কেন তার /etc/launchd.confবিপরীতে ব্যবহার করবেন তা আমি নিশ্চিত নই /etc/profile- তবে আমি ম্যাক ওএস এক্সে কোনও বিশেষজ্ঞ নই - আমি আপনাকে বিশ্বাস করি যে আমি এটি নিশ্চিতভাবে কাজ করি তবে launchdএটি ম্যাক ওএস এক্স বাস্তবায়ন / প্রতিস্থাপন init- ম্যাক ওএস এক্স আমাকে বিভ্রান্ত করে।

যাইহোক, setenv PATH "$PATH:/more/paths:/and/more/paths"কাজ করবে (tcsh), এবং বোর্ন শেল সমতুল্য export PATH="$PATH:/more/paths:/and/more/paths"- কোনও launchdনির্দিষ্ট শেলের সাথে কীভাবে সম্পর্কিত তা আমার কোনও ধারণা নেই ।

আমার মনে হয় আমি আরও প্রশ্ন জিজ্ঞাসা করেছি তবে আমি উত্তর দিয়েছি =)


4
/ ইত্যাদি / প্রোফাইল পাথ সেটিংস ওএস এক্স জিইউআই অ্যাপ্লিকেশনগুলির দ্বারা দেখা যায় না। এটি কেবল বাশের ক্ষেত্রে প্রযোজ্য। আমি চাই সমস্ত অ্যাপ্লিকেশন নতুন পথ সেটিংটি পেতে পারে।
লাজোস

1
ইউনিক্স? অবশ্যই, এটি ইউনিক্স। মানে, বাছা। হ্যাঁ, আমরা 30 বছর ধরে কাজ করা জিনিসগুলি ভেঙেছি, তবে এটি এখনও ইউনিক্স! / দীর্ঘশ্বাস
ম্যাট সিমন্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.