كيف يمكنني جعل ملف .profile يعمل على جهاز Solaris؟
سؤال
لقد كان هذا الأمر محبطًا لي لمدة يومين، ويبدو أنه يجب أن يكون أمرًا بسيطًا للغاية.لقد قمت للتو بإنشاء حساب على جهاز Solaris.أعتقد أن نظام التشغيل Sun 5.10.
الافتراضي هو Bourne Shell الذي لا أريده.لقد فعلت ذلك ل cat /etc/shells
مما يؤدي إلى:
/bin/sh
/sbin/sh
/bin/ksh
/usr/bin/ksh
يبدو أن Korn Shell هو كل ما يمكنني استخدامه.
لقد أنشأت أ .profile
الملف وكتب:
export SHELL=/usr/bin/ksh
ثم فعلت أ env
ويبدو /bin/sh
لا يزال مدرجًا على أنه صدفتي.لقد قمت بتسجيل الخروج ثم قمت بتسجيل الدخول مرة أخرى والآن أحصل على:
-sh: SHELL=/usr/bin/ksh: is not an identifier
لقد حاولت إضافة #!/usr/bin/ksh
في بداية .profile
.هذا لم ينجح.لقد حاولت إضافة فاصلة منقوطة في نهاية export
.هذا لم ينجح.لقد حاولت: SHELL=/bin/ksh
وهذا لم ينجح أيضًا.
هدفي النهائي هو الوصول بهذه البيئة إلى نقطة يمكنني من خلالها العمل بشكل منتج.أنا معتاد على BASH حيث يكون لدي علامات تبويب مكتملة، وسهم لأعلى للتاريخ، وما إلى ذلك، ولا تحتوي قذيفة Bourne هذه على أي من ذلك وهذا يحبطني بلا نهاية.
أعلم أن هذا يجب أن يكون بسيطًا ولكن كل بحثي على Google لم يكن مفيدًا.هل يستطيع احد مساعدتي؟
المحلول
/etc/shells
ليس ملف Solaris قياسيًا، فمن المحتمل ألا تعتمد على محتوياته.
على الجانب الآخر، bash
يعد جزءًا من التثبيت الافتراضي لـ Solaris 10.يجب أن تكون موجودة بالفعل كما /bin/bash
(/usr/bin/bash
في الواقع ولكن /bin
هو رابط رمزي ل /usr/bin
على أي حال).
لو bash
غير موجود، قد ترغب في مطالبة المسؤول بتثبيت الملف SUNWbash
الحزمة من Solaris_10/Product
الدليل في وسائط التثبيت.
بعد ذلك، لتحديث الصدفة الخاصة بك، الطريقة المعتادة هي تحديث الصدفة المحددة لحسابك.إذا كان محليًا، فهذا هو الحقل الأخير في ملفك /etc/passwd
دخول.
وبدلاً من ذلك، يمكنك استخدام هذا الاختراق في نهاية ملفك الشخصي:
[ ! "$BASH_VERSION" -a -x /bin/bash ] && SHELL=/bin/bash exec /bin/bash
نصائح أخرى
بالترتيب التنازلي للأفضلية
- اطلب من مسؤول النظام تثبيت bash وتحديث /etc/shells وتحديث Shell الخاص بتسجيل الدخول
- معرفة ما إذا كان
chsh
تم تثبيت البرنامج الذي سيسمح لك بتغيير غلاف تسجيل الدخول الخاص بك - اطلب من مسؤول النظام تغيير غلاف تسجيل الدخول الخاص بك إلى /usr/bin/ksh
تعديل ~/.ملفك الشخصي:
if type [[ >/dev/null; then : # this is ksh else # not ksh export SHELL; SHELL=/usr/bin/ksh exec $SHELL fi