it-swarm.asia

أين يتم تعيين 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 الخاص بي

134
Andrew

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

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

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

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

أخيرًا ، تتم قراءة /etc/paths و /etc/paths.d بواسطة Shell أيضًا.


تتم إضافة /opt/local/bin وما إلى ذلك في ~/.tcshrc بواسطة MacPorts. تأكد أيضًا من البحث في ~/.cshrc.

157
Steve Folly

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

بالنسبة إلى MacPorts ، استخدم Sudo /etc/paths/opt/local/bin وأعد فتح نافذة الجهاز الطرفي.

47
Jim Logan

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

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

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

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

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

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

ars technica: كيف يمكنني إضافة شيء إلى PATH في snow leopard؟

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

دليل MacPorts

25
leanne

لإظهار المسار الخاص بك ، صدى PATH $.

echo $PATH

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

4
jtimberman

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

قارن 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
Keith Bentrup

يمكن تعريفه في أي من:

  • متغيرات النظام - /etc/paths
  • متغيرات المستخدم - راجع شرحSteve Folly
2
ericn

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

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

1
ricbax

فيما يتعلق بـ docs من أجل /usr/libexec/path_helper ، تم الحصول على المكونات الأولية لـ PATH $ من /etc/paths ويبدو أنها افتراضيًا

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

لنظام التشغيل OS-X Snow Leopard

1
A B