الفرق بين المراجعتين لصفحة: «Bash/shell initialization files»
أسامه-دمراني (نقاش | مساهمات) طلا ملخص تعديل |
أسامه-دمراني (نقاش | مساهمات) مراجعة 4: تعديل الروابط |
||
سطر 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> من أجل الاستخدام العام أو الفردي، وتمر تلك الملفات -والملف في المثال بالأعلى- على عدة تغييرات قبل استخدامها في بيئتك. | ||
سطر 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]] لمزيد من الشرح عن الدوال. | ||
== ملفات إعدادات المستخدم == | == ملفات إعدادات المستخدم == | ||
سطر 202: | سطر 204: | ||
لاحظ أن <code>source resourcefile</code> هو نفسه <code>resourcefile.</code> . | لاحظ أن <code>source resourcefile</code> هو نفسه <code>resourcefile.</code> . | ||
في حال اشتبهت عليك تلك الإعدادات الكثيرة ورأيت إعدادات لا تعرف أين أصلها، فاستخدم أمر <code>echo</code> تمامًا كما تفعل من أجل تنقيح برامج bash (انظر [[Bash/debugging Bash scripts|تنقيح برامج Bash]])، فمثلًا يمكنك إضافة سطر مثل هذا:<syntaxhighlight lang="bash"> | في حال اشتبهت عليك تلك الإعدادات الكثيرة ورأيت إعدادات لا تعرف أين أصلها، فاستخدم أمر <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"> |
مراجعة 03:43، 6 سبتمبر 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./~
يفضّل استخدام هذا الملف في حالة إعداد البيئات لكل مستخدم على حدة، وللمستخدمين هنا أن يضيفوا خيارات إضافية أو يغيروا الإعدادات الافتراضية:
hsoub~> 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/
:
hsoub ~> 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
hsoub ~>
ستجد أمثلة أكثر في حزمة Bash، وتذكر أن نماذج الملفات الموجودة قد تحتاج إلى تعديلات قبل استخدامها من أجل أن تعمل في بيئتك.
bash_logout./~
يحتوي هذا الملف على تعليمات محددة لإجراء تسجيل الخروج، وفي المثال التالي فإنها تعليمة واحدة "clear
" لتترك النافذة خالية بعد إغلاقها، ومثل ذلك الأمر مفيد في الاتصالات عن بعد (remote connections):
hsoub ~> cat .bash_logout
#######################################################################
# #
# Bash_logout file #
# #
# commands to perform from the bash shell at logout time #
# #
#######################################################################
clear
hsoub ~>
تغيير ملفات إعدادات الصدفة
يجب أن يعاود المستخدم الاتصال بالنظام عند تعديل أي من الملفات التي ذكرناها بالأعلى من أجل تفعيل تلك التعديلات، أو كطريقة أخرى يستخدم أمر 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"