الفرق بين المراجعتين ل"Bash/shell initialization files"
أسامه-دمراني (نقاش | مساهمات) ط |
|||
(7 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة) | |||
سطر 2: | سطر 2: | ||
== ملفات الإعدادات على مستوى النظام System-wide Configuration files == | == ملفات الإعدادات على مستوى النظام System-wide Configuration files == | ||
− | === <code>etc/profile/</code> === | + | === الملف <code>etc/profile/</code> === |
تقرأ Bash التعليمات الموجودة في <code>etc/profile/</code> إن استدعيْت بشكل تفاعلي عبر خيار <code>login--</code> أو إن استدعيْت كـ <code>sh</code> ، تضبط تلك التعليمات عادة المتغيرات <code>PATH - USER - MAIL - HOSTNAME - HISTSIZE</code> ، وهي متغيرات تابعة للصدفة. | تقرأ Bash التعليمات الموجودة في <code>etc/profile/</code> إن استدعيْت بشكل تفاعلي عبر خيار <code>login--</code> أو إن استدعيْت كـ <code>sh</code> ، تضبط تلك التعليمات عادة المتغيرات <code>PATH - USER - MAIL - HOSTNAME - HISTSIZE</code> ، وهي متغيرات تابعة للصدفة. | ||
سطر 49: | سطر 49: | ||
unset i | unset i | ||
</syntaxhighlight>ويضبط ملف التهيئة ذاك بعض متغيرات الصدفة الأساسية إضافة إلى بعض المتغيرات التي يطلبها أي مستخدم يشغّل جافا أو أي تطبيقات جافا في متصفحه. انظر [[Bash/variables|المتغيرات في Bash]]. | </syntaxhighlight>ويضبط ملف التهيئة ذاك بعض متغيرات الصدفة الأساسية إضافة إلى بعض المتغيرات التي يطلبها أي مستخدم يشغّل جافا أو أي تطبيقات جافا في متصفحه. انظر [[Bash/variables|المتغيرات في Bash]]. | ||
+ | |||
+ | انظر [[Bash/conditional statements|البُنى الشرطية في Bash]] للمزيد عن عبارة if الشرطية التي استُخدمت في المثال السابق، و [[Bash/repetitive tasks|المهام التكرارية في Bash]] الذي يناقش الحلقات التكرارية مثل <code>for</code>. | ||
يحتوي مصدر Bash على نماذج لملفات <code>profile</code> من أجل الاستخدام العام أو الفردي، وتمر تلك الملفات -والملف في المثال بالأعلى- على عدة تغييرات قبل استخدامها في بيئتك. | يحتوي مصدر Bash على نماذج لملفات <code>profile</code> من أجل الاستخدام العام أو الفردي، وتمر تلك الملفات -والملف في المثال بالأعلى- على عدة تغييرات قبل استخدامها في بيئتك. | ||
− | === etc/bashrc/ === | + | === الملف <code>etc/bashrc/</code> === |
ربما يكون من الأفضل أن تضع الملفات الخاصة بتهيئة Bash في هذا الملف إن كنت تعمل على أنظمة بها أنواعًا مختلفة من الصدفات، ذلك أن الصدفات الأخرى -صدفة بورن مثلًا- تقرأ ملف <code>etc/profile/</code>. | ربما يكون من الأفضل أن تضع الملفات الخاصة بتهيئة Bash في هذا الملف إن كنت تعمل على أنظمة بها أنواعًا مختلفة من الصدفات، ذلك أن الصدفات الأخرى -صدفة بورن مثلًا- تقرأ ملف <code>etc/profile/</code>. | ||
− | ويمكن تلافي حدوث الأخطاء التي تولّدها الصدفات التي لا تفهم البنية اللغوية (syntax) لصدفة | + | ويمكن تلافي حدوث الأخطاء التي تولّدها الصدفات التي لا تفهم البنية اللغوية (syntax) لصدفة Bash بفصل ملفات الإعدادات (configuration files) للأنواع المختلفة من الصدفات، ويشير ملف <code>bashrc./~</code> الخاص بالمستخدم في تلك الحالات إلى <code>etc/bashrc/</code> من أجل تضمينه في عملية تهيئة الصدفة (shell initialization) عند تسجيل الدخول. |
قد تجد أن ملف <code>etc/profile/</code> الموجود في نظامك لا يحتوي إلا على إعدادات بيئة الصدفة وإعدادات بدء تشغيل البرنامج، بينما يحتوي <code>etc/bashrc/</code> على تعريفات على مستوى النظام (system-wide definitions) لدوال الصدفة وأوامرها البديلة. أيضًا قد يشار إلى ملف <code>etc/bashrc/</code> داخل ملف <code>etc/profile/</code> أو في ملفات تهيئة الصدفة الخاصة بالمستخدم. | قد تجد أن ملف <code>etc/profile/</code> الموجود في نظامك لا يحتوي إلا على إعدادات بيئة الصدفة وإعدادات بدء تشغيل البرنامج، بينما يحتوي <code>etc/bashrc/</code> على تعريفات على مستوى النظام (system-wide definitions) لدوال الصدفة وأوامرها البديلة. أيضًا قد يشار إلى ملف <code>etc/bashrc/</code> داخل ملف <code>etc/profile/</code> أو في ملفات تهيئة الصدفة الخاصة بالمستخدم. | ||
سطر 79: | سطر 81: | ||
} | } | ||
− | </syntaxhighlight>وهو يحتوي على أوامر بديلة (aliases) مفيدة إضافة إلى الأوامر البديلة العامة، إذ أنها تضمن تنفيذ الأمر الذي تدخله حتى لو أخطأت في تهجئته، انظر [[Bash/aliases|الأوامر البديلة]]. يحتوي هذا الملف أيضًا على دالة <code>pskill</code>، انظر [[Bash/functions|الدوال في Bash]] لمزيد من الشرح عن الدوال. | + | </syntaxhighlight>وهو يحتوي على أوامر بديلة (aliases) مفيدة إضافة إلى الأوامر البديلة العامة، إذ أنها تضمن تنفيذ الأمر الذي تدخله حتى لو أخطأت في تهجئته، انظر [[Bash/aliases#.D8.A5.D9.86.D8.B4.D8.A7.D8.A1 .D8.A7.D9.84.D8.A3.D9.88.D8.A7.D9.85.D8.B1 .D8.A7.D9.84.D8.A8.D8.AF.D9.8A.D9.84.D8.A9 .D9.88.D8.AD.D8.B0.D9.81.D9.87.D8.A7|إنشاء الأوامر البديلة وحذفها]]. يحتوي هذا الملف أيضًا على دالة <code>pskill</code>، انظر [[Bash/functions|الدوال في Bash]] لمزيد من الشرح عن الدوال. |
== ملفات إعدادات المستخدم == | == ملفات إعدادات المستخدم == | ||
<blockquote>'''لا أجد تلك الملفات على حاسوبي!؟'''</blockquote><blockquote>قد لا تجد تلك الملفات في مجلد المنزل (home) لديك، فأنشئها بنفسك إن كانت غير موجودة.</blockquote> | <blockquote>'''لا أجد تلك الملفات على حاسوبي!؟'''</blockquote><blockquote>قد لا تجد تلك الملفات في مجلد المنزل (home) لديك، فأنشئها بنفسك إن كانت غير موجودة.</blockquote> | ||
− | === <code>bash_profile./~</code> === | + | === الملف <code>bash_profile./~</code> === |
يفضّل استخدام هذا الملف في حالة إعداد البيئات لكل مستخدم على حدة، وللمستخدمين هنا أن يضيفوا خيارات إضافية أو يغيروا الإعدادات الافتراضية:<syntaxhighlight lang="bash"> | يفضّل استخدام هذا الملف في حالة إعداد البيئات لكل مستخدم على حدة، وللمستخدمين هنا أن يضيفوا خيارات إضافية أو يغيروا الإعدادات الافتراضية:<syntaxhighlight lang="bash"> | ||
− | + | wiki~> cat .bash_profile | |
################################################################# | ################################################################# | ||
# # | # # | ||
سطر 111: | سطر 113: | ||
</syntaxhighlight>يضبط هذا المستخدم -صاحب الإعدادات أعلاه- زر backspace لتسجيل الدخول على أنظمة تشغيل مختلفة، وإضافة إلى ذلك فإن ملفات <code>bashrc.</code> و<code>bash_login.</code> الخاصة بالمستخدم قد قُرِأت. | </syntaxhighlight>يضبط هذا المستخدم -صاحب الإعدادات أعلاه- زر backspace لتسجيل الدخول على أنظمة تشغيل مختلفة، وإضافة إلى ذلك فإن ملفات <code>bashrc.</code> و<code>bash_login.</code> الخاصة بالمستخدم قد قُرِأت. | ||
− | === <code>bash_login./~</code> === | + | === الملف <code>bash_login./~</code> === |
أما هذا الملف فيحتوي إعدادات محددة لا تُنفَّذ عادة إلا حين تسجل الدخول إلى النظام، وسنستخدمها في المثال التالي لضبط قيمة <code>umask</code> وعرض قائمة من المستخدمين المتصلين حال تسجيل الدخول، كما سيظهر لهذا المستخدم تقويمًا بالشهر الحالي:<syntaxhighlight lang="bash"> | أما هذا الملف فيحتوي إعدادات محددة لا تُنفَّذ عادة إلا حين تسجل الدخول إلى النظام، وسنستخدمها في المثال التالي لضبط قيمة <code>umask</code> وعرض قائمة من المستخدمين المتصلين حال تسجيل الدخول، كما سيظهر لهذا المستخدم تقويمًا بالشهر الحالي:<syntaxhighlight lang="bash"> | ||
####################################################################### | ####################################################################### | ||
سطر 128: | سطر 130: | ||
</syntaxhighlight>وسيُقرأ هذا الملف في غياب <code>bash_profile./~</code> . | </syntaxhighlight>وسيُقرأ هذا الملف في غياب <code>bash_profile./~</code> . | ||
− | === <code>profile./~</code> === | + | === الملف <code>profile./~</code> === |
− | <span> يُقرأ ملف <code>profile./~</code> في غياب ملفي <code>bash_profile./~</code> و <code>bash_login./~</code> ، وقد يحتوي هذا الملف على نفس الإعدادات التي -في تلك الحالة- تستطيع الصدفات الأخرى الوصول إليها. لاحظ أن تلك الصدفات قد لا تفهم البنية اللغوية لصدفة | + | <span> يُقرأ ملف <code>profile./~</code> في غياب ملفي <code>bash_profile./~</code> و <code>bash_login./~</code> ، وقد يحتوي هذا الملف على نفس الإعدادات التي -في تلك الحالة- تستطيع الصدفات الأخرى الوصول إليها. لاحظ أن تلك الصدفات قد لا تفهم البنية اللغوية لصدفة Bash .</span> |
− | === <code>bashrc./~</code> === | + | === الملف <code>bashrc./~</code> === |
من المعتاد الآن أن ترى صدفة non-login بسبب تسجيل المستخدم للدخول من الواجهات الرسومية، ولا يُدخل المستخدم بياناته في تلك الحالة -اسم المستخدم وكلمة المرور- فلا تتم عملية المصادقة، وعندها تبحث Bash عن ملف <code>bashrc./~</code>، لذا فإن ذلك الملف يشار إليه في الملفات المقروءة عند تسجيل الدخول مما يعني أنك لا تحتاج إلى إدخال نفس الإعدادات في عدة ملفات. | من المعتاد الآن أن ترى صدفة non-login بسبب تسجيل المستخدم للدخول من الواجهات الرسومية، ولا يُدخل المستخدم بياناته في تلك الحالة -اسم المستخدم وكلمة المرور- فلا تتم عملية المصادقة، وعندها تبحث Bash عن ملف <code>bashrc./~</code>، لذا فإن ذلك الملف يشار إليه في الملفات المقروءة عند تسجيل الدخول مما يعني أنك لا تحتاج إلى إدخال نفس الإعدادات في عدة ملفات. | ||
وفي المثال التالي لملف <code>bashrc.</code> لمستخدم ما، تجد أنه قد حُدِّدت بعض الأوامر البديلة وضُبطَت متغيرات لبرامج محددة، بعد قراءة ملف <code>etc/bashrc/</code> :<syntaxhighlight lang="bash"> | وفي المثال التالي لملف <code>bashrc.</code> لمستخدم ما، تجد أنه قد حُدِّدت بعض الأوامر البديلة وضُبطَت متغيرات لبرامج محددة، بعد قراءة ملف <code>etc/bashrc/</code> :<syntaxhighlight lang="bash"> | ||
− | + | wiki ~> cat .bashrc | |
# /home/franky/.bashrc | # /home/franky/.bashrc | ||
سطر 174: | سطر 176: | ||
# THE END | # THE END | ||
− | + | wiki ~> | |
</syntaxhighlight>ستجد أمثلة أكثر في حزمة Bash، وتذكر أن نماذج الملفات الموجودة قد تحتاج إلى تعديلات قبل استخدامها من أجل أن تعمل في بيئتك. | </syntaxhighlight>ستجد أمثلة أكثر في حزمة Bash، وتذكر أن نماذج الملفات الموجودة قد تحتاج إلى تعديلات قبل استخدامها من أجل أن تعمل في بيئتك. | ||
− | === <code>bash_logout./~</code> === | + | === الملف <code>bash_logout./~</code> === |
يحتوي هذا الملف على تعليمات محددة لإجراء تسجيل الخروج، وفي المثال التالي فإنها تعليمة واحدة "<code>clear</code>" لتترك النافذة خالية بعد إغلاقها، ومثل ذلك الأمر مفيد في الاتصالات عن بعد (remote connections):<syntaxhighlight lang="bash"> | يحتوي هذا الملف على تعليمات محددة لإجراء تسجيل الخروج، وفي المثال التالي فإنها تعليمة واحدة "<code>clear</code>" لتترك النافذة خالية بعد إغلاقها، ومثل ذلك الأمر مفيد في الاتصالات عن بعد (remote connections):<syntaxhighlight lang="bash"> | ||
− | + | wiki ~> cat .bash_logout | |
####################################################################### | ####################################################################### | ||
# # | # # | ||
سطر 188: | سطر 190: | ||
####################################################################### | ####################################################################### | ||
clear | clear | ||
− | + | wiki ~> | |
</syntaxhighlight> | </syntaxhighlight> | ||
== تغيير ملفات إعدادات الصدفة == | == تغيير ملفات إعدادات الصدفة == | ||
− | يجب أن يعاود المستخدم الاتصال بالنظام عند تعديل أي من الملفات التي ذكرناها بالأعلى من أجل تفعيل تلك التعديلات، أو كطريقة أخرى يستخدم أمر <code>source</code> على الملف الذي عدّله، وتُطبَّق التعديلات على جلسة الصدفة الحالية عند تفسير برنامج | + | يجب أن يعاود المستخدم الاتصال بالنظام عند تعديل أي من الملفات التي ذكرناها بالأعلى من أجل تفعيل تلك التعديلات، أو كطريقة أخرى يستخدم أمر <code>source</code> على الملف الذي عدّله، وتُطبَّق التعديلات على جلسة الصدفة الحالية عند تفسير برنامج Bash بتلك الطريقة: |
'''شكل 3.1 : محثات مختلفة لكل مستخدم.''' | '''شكل 3.1 : محثات مختلفة لكل مستخدم.''' | ||
[[ملف:prompts.png|وصلة=https://wiki.hsoub.com/%D9%85%D9%84%D9%81:prompts.png|بديل=صدفة bash بها أمثلة لبيان اختلاف محث المستخدم العادي عن المستخدم الجذر|مركز]] | [[ملف:prompts.png|وصلة=https://wiki.hsoub.com/%D9%85%D9%84%D9%81:prompts.png|بديل=صدفة bash بها أمثلة لبيان اختلاف محث المستخدم العادي عن المستخدم الجذر|مركز]] | ||
− | تُنفَّذ أغلب برامج | + | تُنفَّذ أغلب برامج Bash في بيئات خاصة حيث لا تكتسب العمليات الفرعية المتغيرات إلا إن جعلتها الصدفة الأم مصدرًا (sourcing). كذلك فإن جعل الملف الذي يحتوي أوامر الصدفة مصدرًا هو إحدى طرق تطبيق التعديلات على بيئتك وضبط المتغيرات في الصدفة الحالية. |
ويشرح ذلك المثال أيضًا استخدام المحثات المختلفة لكل مستخدم، وفي الحالة التي لدينا فإن علامة <code>#</code> تعني أنك الآن في طور المستخدم الجذر، فيجب أن تحذر من كل أمر تدخله إذ أن الجهاز لن يتردد في تنفيذه حتى لو عنى ذلك تدمير ملفات من صلب النظام، على عكس محث <code>$</code> الخاص بالمستخدم العادي الذي له صلاحيات محدودة في تنفيذ الأوامر التي يدخلها. | ويشرح ذلك المثال أيضًا استخدام المحثات المختلفة لكل مستخدم، وفي الحالة التي لدينا فإن علامة <code>#</code> تعني أنك الآن في طور المستخدم الجذر، فيجب أن تحذر من كل أمر تدخله إذ أن الجهاز لن يتردد في تنفيذه حتى لو عنى ذلك تدمير ملفات من صلب النظام، على عكس محث <code>$</code> الخاص بالمستخدم العادي الذي له صلاحيات محدودة في تنفيذ الأوامر التي يدخلها. | ||
سطر 202: | سطر 204: | ||
لاحظ أن <code>source resourcefile</code> هو نفسه <code>resourcefile.</code> . | لاحظ أن <code>source resourcefile</code> هو نفسه <code>resourcefile.</code> . | ||
− | في حال اشتبهت عليك تلك الإعدادات الكثيرة ورأيت إعدادات لا تعرف أين أصلها، فاستخدم أمر <code>echo</code> تمامًا كما تفعل من أجل تنقيح برامج | + | في حال اشتبهت عليك تلك الإعدادات الكثيرة ورأيت إعدادات لا تعرف أين أصلها، فاستخدم أمر <code>echo</code> تمامًا كما تفعل من أجل تنقيح برامج Bash (انظر [[Bash/debugging Bash scripts#.D8.AA.D9.86.D9.82.D9.8A.D8.AD .D8.A3.D8.AC.D8.B2.D8.A7.D8.A1 .D9.85.D9.86 .D8.A7.D9.84.D8.B5.D8.AF.D9.81.D8.A9|تنقيح أجزاء من برامج Bash]])، فمثلًا يمكنك إضافة سطر مثل هذا:<syntaxhighlight lang="bash"> |
echo "Now executing .bash_profile.." | echo "Now executing .bash_profile.." | ||
</syntaxhighlight>أو<syntaxhighlight lang="bash"> | </syntaxhighlight>أو<syntaxhighlight lang="bash"> | ||
سطر 218: | سطر 220: | ||
[[تصنيف:Bash]] | [[تصنيف:Bash]] | ||
[[تصنيف:Bash Shell Initialization Files]] | [[تصنيف:Bash Shell Initialization Files]] | ||
+ | [[تصنيف:Bash Aliases]] | ||
+ | [[تصنيف:Bash Configuration Files]] |
المراجعة الحالية بتاريخ 14:07، 7 سبتمبر 2018
ملفات الإعدادات على مستوى النظام System-wide Configuration files
الملف etc/profile/
تقرأ Bash التعليمات الموجودة في etc/profile/
إن استدعيْت بشكل تفاعلي عبر خيار login--
أو إن استدعيْت كـ sh
، تضبط تلك التعليمات عادة المتغيرات PATH - USER - MAIL - HOSTNAME - HISTSIZE
، وهي متغيرات تابعة للصدفة.
كذلك تُضبط قيمة umask
في etc/profile/
على بعض الأنظمة، أما في بعضها الآخر فإن هذا الملف يحتوي على موجّهات (pointers) لملفات الإعدادات الأخرى مثل:
- ملف
etc/inputrc/
، وهو ملف تهيئة على مستوى النظام لأمرreadline
، حيث يمكنك تهيئة أسلوب الجرس (bell style) لسطر الأوامر. - مجلد
etc/profile.d/
، وهو يحتوي الملفات التي تضبط سلوك برامج محددة على مستوى النظام.
يجب أن تكون كل الإعدادات التي تريد تطبيقها على جميع المستخدمين في النظام لديك موجودة في ذلك الملف -etc/profile/
-، وقد يكون شكله مشابهًا لما يلي:
# /etc/profile
# System wide environment and startup programs, for login setup
PATH=$PATH:/usr/X11R6/bin
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
HOSTNAME=`/bin/hostname`
HISTSIZE=1000
# Keyboard, bell, display style: the readline config file:
if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
INPUTRC=/etc/inputrc
fi
PS1="\u@\h \W"
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC PS1
# Source initialization files for specific programs (ls, vim, less, ...)
for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
. $i
fi
done
# Settings for program initialization
source /etc/java.conf
export NPX_PLUGIN_PATH="$JRE_HOME/plugin/ns4plugin/:/usr/lib/netscape/plugins"
PAGER="/usr/bin/less"
unset i
ويضبط ملف التهيئة ذاك بعض متغيرات الصدفة الأساسية إضافة إلى بعض المتغيرات التي يطلبها أي مستخدم يشغّل جافا أو أي تطبيقات جافا في متصفحه. انظر المتغيرات في Bash.
انظر البُنى الشرطية في Bash للمزيد عن عبارة if الشرطية التي استُخدمت في المثال السابق، و المهام التكرارية في Bash الذي يناقش الحلقات التكرارية مثل for
.
يحتوي مصدر Bash على نماذج لملفات profile
من أجل الاستخدام العام أو الفردي، وتمر تلك الملفات -والملف في المثال بالأعلى- على عدة تغييرات قبل استخدامها في بيئتك.
الملف etc/bashrc/
ربما يكون من الأفضل أن تضع الملفات الخاصة بتهيئة Bash في هذا الملف إن كنت تعمل على أنظمة بها أنواعًا مختلفة من الصدفات، ذلك أن الصدفات الأخرى -صدفة بورن مثلًا- تقرأ ملف etc/profile/
.
ويمكن تلافي حدوث الأخطاء التي تولّدها الصدفات التي لا تفهم البنية اللغوية (syntax) لصدفة Bash بفصل ملفات الإعدادات (configuration files) للأنواع المختلفة من الصدفات، ويشير ملف bashrc./~
الخاص بالمستخدم في تلك الحالات إلى etc/bashrc/
من أجل تضمينه في عملية تهيئة الصدفة (shell initialization) عند تسجيل الدخول.
قد تجد أن ملف etc/profile/
الموجود في نظامك لا يحتوي إلا على إعدادات بيئة الصدفة وإعدادات بدء تشغيل البرنامج، بينما يحتوي etc/bashrc/
على تعريفات على مستوى النظام (system-wide definitions) لدوال الصدفة وأوامرها البديلة. أيضًا قد يشار إلى ملف etc/bashrc/
داخل ملف etc/profile/
أو في ملفات تهيئة الصدفة الخاصة بالمستخدم.
يحتوي المصدر على نماذج لملفات bashrc
، كما ستجد نسخة منه في usr/share/doc/bash-2.05b/startup-files/
. إليك جزءًا مما يكون في ملف bashrc
الذي يأتي مع توثيق Bash:
alias ll='ls -l'
alias dir='ls -ba'
alias c='clear'
alias ls='ls --color'
alias mroe='more'
alias pdw='pwd'
alias sl='ls --color'
pskill()
{
local pid
pid=$(ps -ax | grep $1 | grep -v grep | gawk '{ print $1 }')
echo -n "killing $1 (process $pid)..."
kill -9 $pid
echo "slaughtered."
}
وهو يحتوي على أوامر بديلة (aliases) مفيدة إضافة إلى الأوامر البديلة العامة، إذ أنها تضمن تنفيذ الأمر الذي تدخله حتى لو أخطأت في تهجئته، انظر إنشاء الأوامر البديلة وحذفها. يحتوي هذا الملف أيضًا على دالة pskill
، انظر الدوال في Bash لمزيد من الشرح عن الدوال.
ملفات إعدادات المستخدم
لا أجد تلك الملفات على حاسوبي!؟
قد لا تجد تلك الملفات في مجلد المنزل (home) لديك، فأنشئها بنفسك إن كانت غير موجودة.
الملف bash_profile./~
يفضّل استخدام هذا الملف في حالة إعداد البيئات لكل مستخدم على حدة، وللمستخدمين هنا أن يضيفوا خيارات إضافية أو يغيروا الإعدادات الافتراضية:
wiki~> cat .bash_profile
#################################################################
# #
# .bash_profile file #
# #
# Executed from the bash shell when you log in. #
# #
#################################################################
source ~/.bashrc
source ~/.bash_login
case "$OS" in
IRIX)
stty sane dec
stty erase
;;
# SunOS)
# stty erase
# ;;
*)
stty sane
;;
esac
يضبط هذا المستخدم -صاحب الإعدادات أعلاه- زر backspace لتسجيل الدخول على أنظمة تشغيل مختلفة، وإضافة إلى ذلك فإن ملفات bashrc.
وbash_login.
الخاصة بالمستخدم قد قُرِأت.
الملف bash_login./~
أما هذا الملف فيحتوي إعدادات محددة لا تُنفَّذ عادة إلا حين تسجل الدخول إلى النظام، وسنستخدمها في المثال التالي لضبط قيمة umask
وعرض قائمة من المستخدمين المتصلين حال تسجيل الدخول، كما سيظهر لهذا المستخدم تقويمًا بالشهر الحالي:
#######################################################################
# #
# Bash_login file #
# #
# commands to perform from the bash shell at login time #
# (sourced from .bash_profile) #
# #
#######################################################################
# file protection
umask 002 # all to me, read to group and others
# miscellaneous
w
cal `date +"%m"` `date +"%Y"`
وسيُقرأ هذا الملف في غياب bash_profile./~
.
الملف profile./~
يُقرأ ملف profile./~
في غياب ملفي bash_profile./~
و bash_login./~
، وقد يحتوي هذا الملف على نفس الإعدادات التي -في تلك الحالة- تستطيع الصدفات الأخرى الوصول إليها. لاحظ أن تلك الصدفات قد لا تفهم البنية اللغوية لصدفة Bash .
الملف bashrc./~
من المعتاد الآن أن ترى صدفة non-login بسبب تسجيل المستخدم للدخول من الواجهات الرسومية، ولا يُدخل المستخدم بياناته في تلك الحالة -اسم المستخدم وكلمة المرور- فلا تتم عملية المصادقة، وعندها تبحث Bash عن ملف bashrc./~
، لذا فإن ذلك الملف يشار إليه في الملفات المقروءة عند تسجيل الدخول مما يعني أنك لا تحتاج إلى إدخال نفس الإعدادات في عدة ملفات.
وفي المثال التالي لملف bashrc.
لمستخدم ما، تجد أنه قد حُدِّدت بعض الأوامر البديلة وضُبطَت متغيرات لبرامج محددة، بعد قراءة ملف etc/bashrc/
:
wiki ~> cat .bashrc
# /home/franky/.bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# shell options
set -o noclobber
# my shell variables
export PS1="\[\033[1;44m\]\u \w\[\033[0m\] "
export PATH="$PATH:~/bin:~/scripts"
# my aliases
alias cdrecord='cdrecord -dev 0,0,0 -speed=8'
alias ss='ssh octarine'
alias ll='ls -la'
# mozilla fix
MOZILLA_FIVE_HOME=/usr/lib/mozilla
LD_LIBRARY_PATH=/usr/lib/mozilla:/usr/lib/mozilla/plugins
MOZ_DIST_BIN=/usr/lib/mozilla
MOZ_PROGRAM=/usr/lib/mozilla/mozilla-bin
export MOZILLA_FIVE_HOME LD_LIBRARY_PATH MOZ_DIST_BIN MOZ_PROGRAM
# font fix
alias xt='xterm -bg black -fg white &'
# BitchX settings
export IRCNAME="frnk"
# THE END
wiki ~>
ستجد أمثلة أكثر في حزمة Bash، وتذكر أن نماذج الملفات الموجودة قد تحتاج إلى تعديلات قبل استخدامها من أجل أن تعمل في بيئتك.
الملف bash_logout./~
يحتوي هذا الملف على تعليمات محددة لإجراء تسجيل الخروج، وفي المثال التالي فإنها تعليمة واحدة "clear
" لتترك النافذة خالية بعد إغلاقها، ومثل ذلك الأمر مفيد في الاتصالات عن بعد (remote connections):
wiki ~> cat .bash_logout
#######################################################################
# #
# Bash_logout file #
# #
# commands to perform from the bash shell at logout time #
# #
#######################################################################
clear
wiki ~>
تغيير ملفات إعدادات الصدفة
يجب أن يعاود المستخدم الاتصال بالنظام عند تعديل أي من الملفات التي ذكرناها بالأعلى من أجل تفعيل تلك التعديلات، أو كطريقة أخرى يستخدم أمر source
على الملف الذي عدّله، وتُطبَّق التعديلات على جلسة الصدفة الحالية عند تفسير برنامج Bash بتلك الطريقة:
شكل 3.1 : محثات مختلفة لكل مستخدم.
تُنفَّذ أغلب برامج Bash في بيئات خاصة حيث لا تكتسب العمليات الفرعية المتغيرات إلا إن جعلتها الصدفة الأم مصدرًا (sourcing). كذلك فإن جعل الملف الذي يحتوي أوامر الصدفة مصدرًا هو إحدى طرق تطبيق التعديلات على بيئتك وضبط المتغيرات في الصدفة الحالية.
ويشرح ذلك المثال أيضًا استخدام المحثات المختلفة لكل مستخدم، وفي الحالة التي لدينا فإن علامة #
تعني أنك الآن في طور المستخدم الجذر، فيجب أن تحذر من كل أمر تدخله إذ أن الجهاز لن يتردد في تنفيذه حتى لو عنى ذلك تدمير ملفات من صلب النظام، على عكس محث $
الخاص بالمستخدم العادي الذي له صلاحيات محدودة في تنفيذ الأوامر التي يدخلها.
لاحظ أن source resourcefile
هو نفسه resourcefile.
.
في حال اشتبهت عليك تلك الإعدادات الكثيرة ورأيت إعدادات لا تعرف أين أصلها، فاستخدم أمر echo
تمامًا كما تفعل من أجل تنقيح برامج Bash (انظر تنقيح أجزاء من برامج Bash)، فمثلًا يمكنك إضافة سطر مثل هذا:
echo "Now executing .bash_profile.."
أو
echo "Now setting PS1 in .bashrc:"
export PS1="[some value]"
echo "PS1 is now set to $PS1"