سؤال

لقد كان هذا الأمر محبطًا لي لمدة يومين، ويبدو أنه يجب أن يكون أمرًا بسيطًا للغاية.لقد قمت للتو بإنشاء حساب على جهاز 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 

نصائح أخرى

بالترتيب التنازلي للأفضلية

  1. اطلب من مسؤول النظام تثبيت bash وتحديث /etc/shells وتحديث Shell الخاص بتسجيل الدخول
  2. معرفة ما إذا كان chsh تم تثبيت البرنامج الذي سيسمح لك بتغيير غلاف تسجيل الدخول الخاص بك
  3. اطلب من مسؤول النظام تغيير غلاف تسجيل الدخول الخاص بك إلى /usr/bin/ksh
  4. تعديل ~/.ملفك الشخصي:

    if type [[ >/dev/null; then
        : # this is ksh
    else
        # not ksh
        export SHELL; SHELL=/usr/bin/ksh
        exec $SHELL
    fi
    
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top