كيف يتم تعيين $ PATH بشكل دائم على Linux / Unix؟

سئل على ١ فبراير ٢٠١٣  ·  تمت مشاهدة 1.7M مرة  ·  مصدر

Click Upvote picture
في ١ فبراير ٢٠١٣

أحاول إضافة دليل إلى طريقي بحيث يكون دائمًا في مسار Linux الخاص بي. لقد حاولت:

export PATH=$PATH:/path/to/dir

يعمل هذا ، ولكن في كل مرة أخرج فيها من المحطة الطرفية وأبدأ مثيلًا طرفيًا جديدًا ، يتم فقد هذا المسار ، وأحتاج إلى تشغيل أمر التصدير مرة أخرى.

كيف يمكنني القيام بذلك بحيث يتم تعيين هذا بشكل دائم؟

الإجابات

mpowered picture
في ١ فبراير ٢٠١٣
1064

يجب إضافته إلى ملف ~/.profile أو ~/.bashrc .

export PATH="$PATH:/path/to/dir"

اعتمادًا على ما تفعله ، قد ترغب أيضًا في إنشاء ارتباط رمزي بالثنائيات:

cd /usr/bin
sudo ln -s /path/to/binary binary-name

لاحظ أن هذا لن يقوم تلقائيًا بتحديث المسار الخاص بك لبقية الجلسة. للقيام بذلك ، يجب عليك تشغيل:

source ~/.profile 
or
source ~/.bashrc
Grzegorz Żur picture
في ١٦ نوفمبر ٢٠١٤
279

هناك طرق متعددة للقيام بذلك. الحل الفعلي يعتمد على الغرض.

عادةً ما يتم تخزين قيم المتغيرات إما في قائمة التعيينات أو في برنامج نصي يعمل في بداية النظام أو جلسة المستخدم. في حالة البرنامج النصي shell ، يجب عليك استخدام بنية shell محددة وأوامر export أو set .

على مستوى النظام

  1. /etc/environment قائمة المهام الفريدة ، تسمح بالمراجع. مثالي لإضافة أدلة على مستوى النظام مثل /usr/local/something/bin إلى PATH متغير أو تحديد JAVA_HOME . تستخدم من قبل PAM و SystemD.
  2. /etc/environment.d/*.conf قائمة المهام الفريدة ، تسمح بالمراجع. مثالي لإضافة الدلائل على مستوى النظام مثل /usr/local/something/bin إلى PATH متغير أو تحديد JAVA_HOME . يمكن تقسيم التكوين إلى ملفات متعددة ، عادةً ملف واحد لكل أداة (Java ، Go ، NodeJS). مستخدمة بواسطة SystemD بحيث لا تمرر هذه القيم حسب التصميم إلى قذائف تسجيل دخول المستخدم.
  3. /etc/xprofile تنفيذ البرنامج النصي Shell أثناء بدء جلسة X Window System. يتم تشغيل هذا لكل مستخدم يقوم بتسجيل الدخول إلى نظام X Window. إنه اختيار جيد لإدخالات PATH الصالحة لكل مستخدم مثل /usr/local/something/bin . تم تضمين الملف بواسطة برنامج نصي آخر ، لذا استخدم بنية POSIX shell وليس بناء جملة غلاف المستخدم الخاص بك.
  4. /etc/profile و /etc/profile.d/* نص برمجي شل. هذا اختيار جيد لأنظمة الصدفة فقط. تتم قراءة هذه الملفات فقط بواسطة قذائف في وضع تسجيل الدخول.
  5. /etc/<shell>.<shell>rc . شيل. هذا اختيار ضعيف لأنه خاص بقشرة واحدة. تستخدم في وضع عدم تسجيل الدخول.

جلسة المستخدم

  1. ~/.pam_environment . قائمة المهام الفريدة ، غير مسموح بالمراجع. يتم تحميلها بواسطة PAM في بداية كل جلسة مستخدم غير ذات صلة إذا كانت جلسة نظام X Window أو shell. لا يمكنك الإشارة إلى متغيرات أخرى بما في ذلك HOME أو PATH لذا فهي ذات استخدام محدود. تستخدم من قبل PAM.
  2. ~/.xprofile نص برمجي شل. يتم تنفيذ ذلك عندما يقوم المستخدم بتسجيل الدخول إلى نظام X Window System. المتغيرات المحددة هنا مرئية لكل تطبيق X. اختيار مثالي لتوسيع PATH بقيم مثل ~/bin أو ~/go/bin أو تحديد مستخدم محدد GOPATH أو NPM_HOME . تم تضمين الملف بواسطة برنامج نصي آخر ، لذا استخدم بنية POSIX shell وليس بناء جملة غلاف المستخدم الخاص بك. سوف يرى محرر النص الرسومي أو IDE الذي بدأ باختصار هذه القيم.
  3. ~/.profile ، ~/.<shell>_profile ، ~/.<shell>_login نص برمجي شل. سيكون مرئيًا فقط للبرامج التي تم تشغيلها من المحطة الطرفية أو المحاكي الطرفي. إنه اختيار جيد لأنظمة الغلاف فقط. تستخدم بواسطة القذائف في وضع تسجيل الدخول.
  4. ~/.<shell>rc . شيل. هذا اختيار ضعيف لأنه خاص بقشرة واحدة. تستخدم بواسطة القذائف في وضع عدم تسجيل الدخول.

ملاحظات

يبدأ Gnome on Wayland قذيفة تسجيل دخول المستخدم للحصول على البيئة. يستخدم بشكل فعال تكوينات غلاف تسجيل الدخول ~/.profile ، ~/.<shell>_profile ، ~/.<shell>_login ملفات.

كتيبات

  • بيئة
  • البيئة د
  • سحق
  • اندفاع

وثائق التوزيع المحددة

ذات صلة

الفرق بين Login Shell و Non-Login Shell؟

trve.fa7ad picture
في ٢٧ مايو ٢٠١٤
246

في Ubuntu ، قم بتحرير /etc/environment . الغرض الوحيد منه هو تخزين متغيرات البيئة. في الأصل يتم تعريف المتغير $ PATH هنا. هذا لصق من ملف /etc/environment :

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

لذلك يمكنك فقط فتح هذا الملف كجذر وإضافة ما تريد.

للحصول على نتائج فورية، تشغيل (محاولة كمستخدم عادي والجذر):

source /etc/environment && export PATH

تحديث:

إذا كنت تستخدم zsh (المعروف أيضًا باسم Z Shell) ، أضف هذا السطر مباشرةً بعد التعليقات في /etc/zsh/zshenv :

source /etc/environment

لقد واجهت هذا الغرابة الصغيرة في Ubuntu 15.10 ، ولكن إذا لم تحصل zsh على المسار الصحيح ، فقد يكون هذا هو السبب

ashastral picture
في ١ فبراير ٢٠١٣
72

ضع الإعلان export في ~/.bashrc . يحتوي .bashrc الخاص بي على هذا:

export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH
Mohit M picture
في ٣ يناير ٢٠١٤
31

يمكنك تعيين $PATH بشكل دائم بطريقتين.

  1. لتعيين المسار لمستخدم معين: قد تحتاج إلى عمل الإدخال في .bash_profile في الدليل الرئيسي للمستخدم.

    على سبيل المثال في حالتي سوف أقوم بتعيين مسار جافا في ملف تعريف المستخدم الخاص بشركة القط

    [tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
    
  2. لتعيين مسار مشترك لجميع مستخدمي النظام ، قد تحتاج إلى تعيين المسار مثل هذا:

    [root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile
    
Daniel Antonio Nu&#241;ez Carhuayo picture
في ٢١ أكتوبر ٢٠١٦
15

يمكنك استخدامها على Centos أو RHEL للمستخدم المحلي:

echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile

يؤدي هذا إلى إضافة الدليل الحالي (أو يمكنك استخدام دليل آخر) إلى المسار ، مما يجعله دائمًا ولكنه يصبح ساريًا عند تسجيل دخول المستخدم التالي.

إذا كنت لا تريد إعادة تسجيل الدخول ، فيمكنك استخدام:

source ~/.bash_profile

إعادة تحميل # User specific environment and startup programs هذا التعليق موجود في .bash_profile

Delucaramos picture
في ٢٩ يونيو ٢٠١٦
12

يمكنك أيضًا التعيين بشكل دائم ، وتحرير أحد هذه الملفات:

/etc/profile (لجميع المستخدمين)

~/.bash_profile (للمستخدم الحالي)

~/.bash_login (للمستخدم الحالي)

~/.profile (للمستخدم الحالي)

يمكنك أيضًا استخدام /etc/environment لتعيين متغير بيئة PATH دائم ، لكنه لا يدعم التوسع المتغير .

مستخلص من: http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html

RobertG picture
في ٤ مارس ٢٠١٧
7

لقد عثرت على هذا السؤال بالأمس عندما كنت أبحث عن طريقة لإضافة مجلد يحتوي على البرامج النصية الخاصة بي إلى PATH - وفوجئت عندما اكتشفت أن ملفي ~/.profile (على Linux Mint 18.1) يحتوي بالفعل على هذا:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

وبالتالي ، كل ما كان علي فعله هو إنشاء المجلد ~/bin ووضع البرامج النصية الخاصة بي هناك.

Himanshu sharma picture
في ٤ نوفمبر ٢٠١٧
7

أعتقد أن الطريقة الأكثر أناقة هي:

1.إضافة هذا في ملف ~ / .bashrc قم بتشغيل هذا الأمر

gedit ~ / .bashrc

أضف مسارك بداخله

تصدير PATH = $ PATH: / opt / node / bin

2.المصدر ~ / .باشرك

(أوبونتو)

aqua picture
في ١ فبراير ٢٠١٣
6

يمكنك إضافة هذا السطر إلى ملف تكوين وحدة التحكم الخاصة بك (مثل .bashrc) ، أو إلى .profile