الخط لا ينفذ في .bash_profile و .bashrc على Mac OSX Snow Leopard
-
22-09-2019 - |
سؤال
لقد قمت للتو بتثبيت Ruby Version Manager (RVM) الذي يعمل بشكل جيد لكنه طلب مني وضع السطر التالي في ملفات my /.bash_profile و ~ /.bashrc:
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
بالنظر إلى المحتوى الذي أراه فيما يلي:
tammam56$ cat /.bash_profile
export PATH="/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:$PATH"
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
tammam56$ cat ~/.bashrc
export PATH=/usr/local/bin:$PATH
export MANPATH=/usr/local/man:$MANPATH
if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
ومع ذلك ، عندما أبدأ نافذة طرفية جديدة ، فإنه لا يقوم بتنفيذ الأمر ، فأنا أعرف ذلك أثناء تعيينك الافتراضي روبي فيون إلى 1.9 وإذا قمت بتنفيذ الخط يدويًا ، فأنا أحصل على الإصدار الصحيح:
tammam56$ ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
Macintosh-37:~ tammam56$ if [[ -s /Users/tammam56/.rvm/scripts/rvm ]] ; then source /Users/tammam56/.rvm/scripts/rvm ; fi
Macintosh-37:~ tammam56$ ruby -v
ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-darwin10.2.0]
أي أفكار كيف يمكنني إصلاح ذلك؟
شكرًا،
تام
المحلول
إذا كان لديك ~/.profile حاول إضافة السطر التالي إليه.
if [[-s/Users/tammam56/.rvm/scripts/rvm]] ؛ ثم Source/Users/tammam56/.rvm/scripts/rvm ؛ Fi
نصائح أخرى
هل أكدت أن الأوامر الأخرى في .bashrc و/أو .bash_profile يتم تحديثها بشكل صحيح؟
بعد ذلك ، يجب عليك تأكيد ما إذا كانت المحطة تبدأ القشرة كقذيفة تسجيل الدخول أم لا (انظر تحت التفضيلات -> بدء التشغيل).
من صفحة باش مان:
عندما يتم استدعاء Bash كقذيفة تسجيل دخول تفاعلية ، أو كقذيفة غير نشطة مع خيار--login ، فإنه يقرأ أولاً وتنفيذ المشاركات من الملف /الخ /الملف الشخصي ، إذا كان هذا الملف موجودًا. بعد قراءة هذا الملف ، يبحث عن ~/.bash_profile ، ~/.bash_login ، و ~/.profile ، في هذا الترتيب ، ويقرأ وينفذ الأوامر من الأول الموجود وقابل للقراءة. يمكن استخدام خيار -noprofile عندما تبدأ القشرة في منع هذا السلوك.
عندما يتم بدء تشغيل قذيفة تفاعلية ليست قذيفة تسجيل الدخول ، يقرأ Bash أوامر من ~/.bashrc ، إذا كان هذا الملف موجودًا. قد يتم تثبيط هذا باستخدام خيار - -NORC. سيؤدي خيار ملف -rcfile إلى إجبار Bash على قراءة وتنفيذ الأوامر من الملف بدلاً من ~/.bashrc.
لقد وجدت أن الحل الأسهل لهذه المسألة هو نقل جميع المحتويات من ملف ~/.bashrc الخاص بي (لذلك أصبح my ~/.bashrc فارغًا الآن) إلى ملف ~/.bash_profile جديد. الآن جميع علامات تبويب Terminal.App تلقائيًا جميع الخطوط المدرجة في ~/.bash_profile. هذا ينطبق أيضا على iterm.