أنا على التوالي أوبونتو 11.04. يمكنني استخدام محطة لبدء جلسة باش ، وأريد أن أضيف متغير البيئة:
$r@hajt:~$ env THEVAR=/example
لكنه لا يعمل. فإنه يدل على جميع المتغيرات مع ثيفار يجري آخر واحد ، ولكن دعوة أخرى ل env
لا تظهر THEVAR
بعد الآن- env | grep THEVAR
إرجاع أي شيء.
وبالمثل ، البرامج النصية مع التصدير (export THEVAR=/example
) أو تعيينات متغيرة أخرى (THEVAR=/example
) لا تضيف متغير البيئة.
وأنا أعلم أنني أفعل شيئا خاطئا ، وأنا أعلم أنه ينبغي أن يكون شيئا بسيطا ، ولكن أنا فقط لا يمكن العثور على ما.
تحديث: المعنى الحقيقي لسؤالي كان هذا واحد: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(على أي حال سأختار الإجابة الأكثر تصويتا وأترك العنوان المحرر - لم يكن هذا ما كنت أطلبه)
env
يدير برنامجا في بيئة معدلة ، ثم يرفض جميع التغييرات.
لتعيين متغير فقط لقذيفة الحالية:
VARNAME="my value"
لتعيينه لقذيفة الحالية و جميع العمليات بدأت من قذيفة الحالية:
export VARNAME="my value" # shorter, less portable version
لتعيينه بشكل دائم لجميع جلسات باش المستقبلية إضافة هذا الخط إلى الخاص بك .bashrc
الملف في الخاص بك $HOME
الدليل.
لتعيينه بشكل دائم ، و على نطاق المنظومة (جميع المستخدمين ، جميع العمليات) إضافة متغير مجموعة في / الخ / البيئة:
sudo -H gedit /etc/environment
يقبل هذا الملف فقط التعيينات المتغيرة مثل:
VARNAME="my value"
لا تستخدم export
الكلمة هنا.
تحتاج إلى تسجيل الخروج من المستخدم الحالي وتسجيل الدخول مرة أخرى حتى تتغير متغيرات البيئة.
Ray
May 17, 2022, 5:27pm
#3
لتعيين متغير بيئة مرة واحدة ، استخدم export
الأمر في موجه ، وليس في برنامج نصي قذيفة:
$ export THEVAR=/example
سيتم تعيين المتغير لبقية جلسة شل أو حتى إلغاء التعيين.
لتعيين متغير بيئة في كل مرة ، استخدم export
القيادة في .bashrc
ملف (أو ملف التهيئة المناسب لقذيفة الخاص بك).
لتعيين متغير بيئة من برنامج نصي ، استخدم export
الأمر في البرنامج النصي ، ثم source
السيناريو. إذا قمت بتنفيذ البرنامج النصي فإنه لن يعمل.
للحصول على شرح للفرق بين المصادر والتنفيذ ، انظر هذه الإجابة: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788
لإضافة متغير بيئة جديد بشكل دائم في أوبونتو (تم اختباره فقط في 14.04) ، استخدم الخطوات التالية:
فتح محطة (عن طريق الضغط Ctrl Alt T )
sudo -H gedit /etc/environment
اكتب كلمة المرور
قم بتحرير الملف النصي الذي تم فتحه للتو: على سبيل المثال إذا كنت تريد إضافة FOO=bar
، ثم اكتب فقط FOO=bar
في خط جديد
احفظه
بمجرد الحفظ ، قم بتسجيل الخروج وتسجيل الدخول مرة أخرى.
يتم إجراء التغييرات المطلوبة.
للحصول على التغييرات البيئة / فار لتستمر بعد اكتمال البرنامج النصي، لديك لاستخدامsource ./script.sh
أو تدوين الاختزال للمصدر،"."،مثل . ./script.sh
سوف المصدر تنفيذ الأوامر في البرنامج النصي كما لو كنت قد كتبتها في... لذلك فإنه يغير بعض جوانب البرنامج النصي ، مثل الخروج... لذلك إذا تحقق البرنامج النصي الخاص بك من شيء ما وقرر الخروج إذا كان خطأ ، على سبيل المثال ، عبر الاتصال exit 0
، فإنه سيتم إنهاء الدورة الطرفية / شل الحالية.
وأنا أعلم أنه في وقت متأخر جدا، ولكن إذا كنت ترغب في إضافة متغير البيئة لجميع المستخدمين ( مثل استخدام جافا) - يمكنك القيام بما يلي:
1) فتح /etc/bash.bashrc
باستخدام نانو (يمكنك استخدام أي محرر ، وأنا لا أفضل همة كما انها أسوأ عندما يتعلق الأمر سهولة الاستخدام-لا شيء شخصي).
2) إلحاق الملف:
export VAR=path export PATH=$PATH:/bin
3) (أفضل إذا كنت يمكن أن ترتد مربع) - أو ببساطة فتح جلسة سه جديدة وتأكيد باستخدام الأمر `إنف'.
ولكن إذا كنت تريد أن يكون لكل مستخدم إعداد منفصل لهذا ، فيجب عليك إجراء تغيير (مكتوب) على .bashrc
الملف تحت ~/.bashrc
(أو /home/$USER/
إذا كنت جديدا على أنظمة لينكس)
إذا كنت تفعل أشياء عبر البرنامج النصي، يتم وضع طريقة واحدة سهلة لتعيين متغير البيئة بشكل دائم أدناه بيان في البرنامج النصي الخاص بك,
if [[ ! -d "$MyVar" ]]; then export MyVar="abc" echo 'export MyVar="abc"' >> ~/.bashrcfi
إذا كنت بحاجة إلى تقييم التعبيرات مثل الأشخاص ذوي الإعاقة ، يمكنك استخدام هذا ، على سبيل المثال,
echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc
Maxx
May 17, 2022, 6:11pm
#8
إذا كنت تستخدم أوبونتو أو أي نظام قائم على يونكس ثم تصدير المتغيرات في ~/.bashrc
الملف. إنه ملف مخفي ويمكنك الوصول إليه من خلال الجهاز أو عن طريق إلغاء إخفاء الملفات المخفية في نظام الملفات.
ثم قم بتحرير الملف وتعيين export THEVAR=/example
هناك ، حفظ وانها فعلت.
إذا كنت تقوم بنشر تطبيقات جافا باستخدام القط يمكنك تعيين متغيرات البيئة بالطريقة التالية:
1.سودو سو ومؤتمر نزع السلاح ل / فار/ليب / القط 8 / بن/ (أو أيهما هو مسار بن القط الخاص بك)
المس setenv.sh(إذا لم يكن موجودا) ، إذا كان الملف موجودا بالفعل setenv.sh'
شمود 777 setenv.sh (جعل الملف قابل للتنفيذ)
سادسا setenv.sh وتعيين السطر التالي في سيتينف.مفتاح شيكسبورت = القيمة
سودو سيستمكتل إعادة تشغيل القط.الخدمة
في ملف جافا الخاص بك يمكنك استخدام التعليمات البرمجية التالية للتحقق مما إذا تم تعيين المتغير
private static void printEnv() { System.out.println("******************************Environment Vars*****************************"); Map<String, String> enviorntmentVars = System.getenv(); enviorntmentVars.entrySet().forEach(System.out::println); System.out.println("******************************system Vars*****************************"); Properties enviorntmentProperties = System.getProperties(); enviorntmentVars.entrySet().forEach(System.out::println);}
Ali
May 17, 2022, 6:29pm
#10
والآخر هو حول المتغيرات العالمية ، وهذا واحد لا يضيف مثل هذا القيد. سأبقيه منفصلا.
Ollie
May 17, 2022, 6:38pm
#11
عند تعريفها / تصديرها في .البشرك ، وأنها تعمل بشكل صحيح.