سؤال أين يتم تعيين PATH $ في OS X 10.6 Snow Leopard؟


انا اطبع echo $PATH على سطر الأوامر والحصول عليها

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

أنا أتساءل أين يتم الحصول على هذا تعيين منذ .bash_login الملف فارغ.

أنا قلق بشكل خاص أنه بعد تثبيت MacPorts ، فإنه تثبيت حفنة من غير المرغوب فيه في /opt. لا أعتقد أن هذا الدليل موجود في تثبيت نظام التشغيل Mac OS X العادي.

تحديث: شكرا ل jtimberman لتصحيح بلدي echo $PATH بيان


132
2017-11-11 18:48


الأصل


تعليق من SMcCandlish:easiest solution when you want to make a site-wide path change (e.g. to include /usr/libexec or whatever) is to edit  /etc/paths  . While the new  /etc/paths.d/  thing is functional, it's actually more hassle than maintaining a single file. As others have hinted but not spelled out, if the path changes you want would be useful only for one user, it's best to make that change in the bash and/or tcsh config files in that user's home directory instead of system-wide. - Sathya♦
Sathya ، يبدو لي /etc/paths.d مفيد لنصوص التثبيت. إذا كنت تريد أن يقوم برنامج التثبيت الخاص بي بإضافة البرنامج المثبت إلى المسار ، فيمكن إسقاط ملف فيه /etc/paths.d. إذا كنت أرغب في تحرير المسار يدويًا ، /etc/paths هو خيار أفضل. - haydenmuhl
لقد قمت بعمل نص برمجي يعتمد في الغالب على هذا المنشور ، والذي يطبع بسرعة مكان تعريف PATH على طول هذه المواقع المتعددة: gist.github.com/lopespm/6407349952bc8a1ff8fb - Pedro Lopes


الأجوبة:


متى bash يبدأ يقرأ الملفات التالية في كل مرة تقوم بتسجيل الدخول. لأغراض OS X ، فإن هذا يعني في كل مرة تفتح فيها صفحة جديدة Terminal نافذة او شباك.

/etc/profile
~/.bash_profile
~/.bash_login   (if .bash_profile does not exist)
~/.profile      (if .bash_login does not exist)

عندما تبدأ قذيفة جديدة عن طريق الكتابة bash على سطر الأوامر ، فإنه يقرأ .bashrc

يستخدم OS X أيضا ~/.MacOSX/environment.plist لتعيين المزيد من متغيرات البيئة ، بما في ذلك المسارات إذا لزم الأمر.

أخيرا، /etc/paths و /etc/paths.d تقرأ من قبل قذيفة أيضا.


/opt/local/bin الخ تضاف في ~/.tcshrc بواسطة MacPorts. ومن المؤكد أيضا أن ننظر في ~/.cshrc.


152
2017-11-11 20:57



على ما يبدو، ~/.MacOSX/environment.plist لا يعمل لبعض الناس. في تغيير مسار OS X بديل عن طريق استخدام المجلد /etc/paths.d لقد تم وصفه. لم اختبر ذلك. - Arjan
+1 لـ ~/.cshrc. ذهبت المكسرات في محاولة لمعرفة السبب ~/.profile لم يكن يعمل. - tomlogic
أعتقد أن هذه الإجابة غير كاملة. أحاول معرفة أين يوجد مسار خاطئ (غير موجود): / usr / bin / local ، حيث أن shell الخاص بي يشكو ، وليس في أي من هذه الملفات. - Tommy
أعتقد .bashrc تقرأ بصرف النظر عما إذا كنت تكتب bash أم لا. - Xiao Peng - ZenUML.com


الق نظرة على الملف /etc/pathsوالذي يستخدم من قبل /usr/libexec/path_helperوالذي يستخدم من قبل /etc/profile.

ل MacPorts ، استخدم sudo /etc/paths/opt/local/bin وأعد فتح النافذة النهائية.


47
2017-12-30 20:31





على محمل الجد ، أعطانا ليوبارد طريقة جديدة لإضافة المسار. قم فقط بإنشاء ملف يحتوي على جزء المسار الذي تريد إضافته ، ثم ضعه في /etc/paths.d

مثال سريع على القيام بذلك في خطوة واحدة هو:

echo "/some/path/to/add" >> /etc/paths.d/somefilename

خلاف ذلك ، يمكنك فقط الذهاب إلى /etc/paths.d ووضع الملف هناك مباشرة. في كلتا الحالتين ، سيتم إلحاق أي أجزاء مسار في الملفات في هذا الدليل إلى المسار الافتراضي.

هذا يعمل أيضا لالمان.

فيما يلي رابط لمزيد من التفاصيل:

ars technica: كيف أقوم بإضافة شيء إلى PATH في سنو ليوبارد؟

في ملاحظة ثانية: يضع MacPorts كل شيء في دليل opt بشكل دقيق لأنه غير مستخدم من قبل Apple. بهذه الطريقة لن تتعارض. دليلهم (مكتوب بشكل ممتاز ، راجع للشغل) لديه تفسير لماذا يستخدم اختيار وكيفية تغيير ذلك الافتراضي إذا كنت ترغب في ذلك.

دليل MacPorts


25
2018-03-25 18:07



رائع جدا. الآن لدينا فقط للحصول على تلك التطبيقات المعتمدة على المسار لم يعد تلوث ملفات ملفنا الشخصي ... - Daniel Beck♦
أحبها. بسيط! - Andrew Hedges
تعليق من SMcCandlish: I have to concur that there's nothing weird or bad about MacPorts using   /opt  (likewise Fink uses /sw); trying to replace stock Mac BSD parts with bleeding-edge builds from external projects like these is a recipe for an unusable system that requires an OS reinstallation. - Sathya♦
سطر واحد ، لا يتم إلحاق الملفات وإزالتها بسهولة. احب هذا. شكرا ليان - Ibrahim Lawal


لإظهار المسار ، اردد $ PATH.

echo $PATH

لتعيين المسار الخاص بك ، قم بتحرير ~/.bash_profile، ليس ~/.bash_login.


4
2017-11-11 19:07





هناك أيضا المسار الذي تحدده سه.

قارن echo $PATH إلى ssh localhost 'echo $PATH'. بما أن ssh لا يقرأ / etc / profile ، / usr / libexec / path_helper لا يعمل ، وبالتالي يتم تخطي / etc / paths. جرب الان ssh localhost 'source /etc/profile; echo $PATH'. يجب أن تكون المسارات أقرب. من المحتمل أن تكون الاختلافات الباقية بسبب تعديل المسار في .bash_profile (الذي يتم تخطيه أيضًا بواسطة ssh) و. bashrc (الذي تتم قراءته بواسطة ssh).

إذا كنت تريد أن يكون مسار ssh مشابهًا لمسيرتك الطرفية العادية ، فيمكنك إضافته source /etc/profile إلى .bashrc الخاص بك.


3
2018-02-07 19:36



شكرا للتلميح! كنت أبحث بالضبط عن الحل مع سه. svn + ssh لا يمكن العثور على الأمر svnserve بالضبط لأن المسار إلى svnserve كان في .profile ، ولكنه لم يكن في .bashrc. - KIR


يمكن تعريفها إما:

  • متغيرات النظام - /etc/paths
  • متغيرات المستخدم - انظر تفسيرSteve Folly

2
2018-06-01 09:50





في الواقع يتم تخزينها في الخاص بك .profile ملف بدلا من .bash_login ومن الشائع أن يستخدم MacPorts هذا بدلا من .bash_login ملف.

أيضا /opt عادة ما يتم إنشاء الدليل بواسطة MacPorts ويخزن ملفاته في هذا المجلد.


1
2017-11-11 19:13





بخصوص مستندات إلى عن على /usr/libexec/path_helper فائدة ، تم أخذ المكونات الأولية لـ PATH $ من /etc/pathsوبشكل افتراضي يبدو

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

ل OS-X سنو ليوبارد


1
2018-06-26 01:40