در لینوکس، کامند لاین که معمولاً توسط bash اجرا میگردد، از یکسری فایلهای استارتاپ برای اجرای محیط کامند لاین استفاده میکند تا محیط کاربری دسکتاپ را کانفیگ کند.
این فایلها در فولدر etc/ قرار میگیرند که اصطلاحاً دربرگیرنده ی تنظیمات Global (گلوبال یا عمومی) هستند که تمامی کاربران میتوانند از آنها استفاده نمایند اما در عین حال یکسری فایلها هم در مسیر home/ قرار میگیرند که میتوانند تنظیمات گلوبال را بی اثر کرده و به همین خاطر است که هر کاربر میتواند یک محیط دسکتاپ شخصی سازی شده داشته باشد. این فایلهای تنظیمات وظایف مختلفی را عهده دار هستند که در ادامه برخی از مهمترین آنها را یادآور خواهیم شد:
- شخصی سازی کردن محیط ترمینال
- تعریف کردن کلیدهای میانبر کامند لاین
- انتخاب ویرایشگر متن پیشفرض
- تنظیم کردن مسیر یافتن برنامههای قابل اجرا و …
Environment Variables یا «متغیرهای محیطی» صرفاً یکسری نام های از پیش تعریف شده یی هستند که دارای مقداری خاص میباشند که کامند لاین لینوکس این امکان را دارد تا معنی و مفهوم آنها را متوجه شود.
برخی از این متغیرها به صورت پیشفرض در لینوکس وجود دارند اما این در حالی است که کاربران لینوکس این امکان را دارند تا متغیرهای اختصاصی خود را هم ایجاد کنند. برای دستیابی به لیست این دست متغیرها، صرفاً کافی است تا دستور set را در کامند لاین وارد نمایید:
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_COMPAT_DIR=/etc/bash_completion.d
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="4" [1]="3" [2]="46" [3]="1" [4]="release" [5]="i686-pc-linux-gnu")
BASH_VERSION='4.3.46(1)-release'
CLUTTER_IM_MODULE=xim
COLUMNS=80
COMPIZ_BIN_PATH=/usr/bin/
COMPIZ_CONFIG_PROFILE=ubuntu
COMP_WORDBREAKS=$' \t\n"\'><;|&(:'
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ezJwhkNLEL
DEFAULTS_PATH=/usr/share/gconf/ubuntu.default.path
DESKTOP_SESSION=ubuntu
DIRSTACK=()
DISPLAY=:0
EUID=1000
GDMSESSION=ubuntu
...
آشنایی با متغیر محیطی HOME
HOME یک متغیر محیطی است که نشانگر دایرکتوری هوم کاربر است. استفاده از دستور cd بدون هیچ گونه پارامتری این امکان را ما میدهد تا در هر کجایی که باشیم، متغیر محیطی HOME فراخوانی شود و ما به مسیر مرتبط با آن ارجاع داده شویم.
به خاطر داشته باشید |
علامت ~ که Tilde نامیده میشود معادل با HOME$ است لذا وارد کردن دستور ~ cd هم همان کاری را میکند که دستور cd $HOME |
پیش از این گفتیم که متغیرهای محیطی نام های از پیش تعریف شده یی هستند که مقادیری را در بر میگیرند. به طور مثال HOME یک متغیر محیطی است که دارای مقدار خاصی است؛ برای نشان دادن مقدار این متغیر، در کامند لاین میتوانیم دستور زیر را وارد نماییم:
echo $HOME
به عنوان خروجی دستور فوق داریم:
/home/sokanacademy
آشنایی با متغیر PATH در لینوکس
PATH (به معنی مسیر) لیستی از دایرکتوری هایی است که وقتی کامندی را به منظور یافتن یک برنامه یا اسکریپت اجرا می کنیم، اسکن میشود تا آن برنامه یا اسکریپت یا بیابد. هر دایرکتوری در PATH با استفاده از یک علامت : از سایر دایرکتوری ها مجزا میگردد. با اجرای دستور echo $PATH در کامند لاین، با خروجی زیر مواجه خواهیم شد:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
آشنایی با متغیر PS1
Prompt Statement که به اختصار PS خوانده میشود به منظور شخصی سازی کردن prompt در پنجره ی ترمینال برای نشان دادن اطلاعاتی که دوست دارید مشاهده کنید مورد استفاده قرار میگیرد. با وارد کردن دستور echo $PS1 خروجی زیر را مشاهده خواهیم کرد:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$
همانطور که در خروجی بالا مشاهده میشود، آپشن هایی داریم همچون w ،\h ،\u\، !\ و d\ که به ترتیب برای نمایش نام کاربری، نام هاست، نام دایرکتوری فعلی که در آن قرار داریم، تاریخچه یی از تعداد کامندها و تاریخ به کار گرفته می شوند.
آشنایی با متغیر SHELL
متغیر محیطی SHELL به کامند شل -برنامه یی که هر چیزی که در کامند لاین تایپ میکنید را مدیریت میکند که معمولاً این برنامه bash نام دارد- پیشفرض کاربر اشاره دارد. با وارد کردن کامند echo $SHELL در ترمینال، با خروجی زیر مواجه خواهیم شد:
/bin/bash
آشنایی مفهوم Alias در کامند لاین لینوکس
معنی لغوی Alias نام مستعار است و منظور از نام های مستعار در لینوکس، کامندها یا دستوراتی شخصی سازی شده است که با استفاده از آنها میتوانیم رفتار کامندهای از پیش تعریف شده در لینوکس را تغییر داده و یا کامندهایی کاملاً جدید برای خود ایجاد نماییم. با تایپ کردن دستور alias در کامند لاین بدون هیچ گونه پارامتری، میتوانیم به لیستی از نام های مستعاری که موجود هستند دسترسی پیدا کنیم:
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias ls='ls --color=auto'
دستیابی به اعداد Random (رَندُم یا تصادفی) در لینوکس
گاهیاوقات نیاز به دستیابی به یکسری عدد تصادفی داریم که از جملهٔ رایجترین شرایط نیاز به این نوع اعداد میتوان به موارد زیر اشاره کرد:
- انجام تسکهای مرتبط با امنیت
- ایجاد دیتای بیمفهوم جهت تست سیستم
در لینوکس یک Environment Variable (متغیر محیطی) به نام RANDOM$ داریم که همواره اعدادی تصادفی ایجاد میکند که این متغیر برگرفته از ابزار از پیشفرض تعریف شدهٔ Random Number Generator (تولیدکنندهٔ عدد تصادفی) در لینوکس است. برای مثال، با استفاده از دستور echo چند بار پیاپی این متغیر را چاپ میکنیم:
$ echo $RANDOM
15610
$ echo $RANDOM
30357
$ echo $RANDOM
13132
میبینیم که هر دفعه یک عدد تصادفی در اختیار ما قرار میگیرد.
آشنایی با نحوهٔ ایجاد اعداد رَندُم در لینوکس
لینوکس فضایی دارد که اصطلاحاً Entropy Pool نامیده میشود که نگهدارندهٔ یکسری دادههای عددی است و اعداد تصادفی از همین بیتها تولید میشوند (منظور از Entropy معیاری از محاسبات تصادفی است که در هنگام انتقال یک سیگنال به وجود میآیند که به نوعی نشانگر میزان آشفتگی یا عدم قطعیت یک سیستم است).
کرنل لینوکس اصطلاحاً ۲ فایل Device Node تحت عناوین dev/random/ و dev/urandom/ دارا است که از Entropy Pool استفاده میکنند تا اعداد تصادفی ایجاد گردد. dev/random/ زمانی استفاده میشود که تمایل داشته باشیم کیفیت اعداد تصادفی بسیار بالا باشد اما dev/urandom/ به مراتب سریعتر بوده و برای بسیاری از تسکهای رمزگذاری مناسب است.
نکته |
سیستمعامل برای آنکه بتواند دیوایسهای سختافزاری مثل ماوس، کیبورد و غیره را تشخیص دهد، نیاز دارد تا نامی به هر دیوایس اختصاص دهد که چنین نامی معمولاً تحت عنوان Device File یا Device Node شناخته میشود. |
در نظر داشته باشیم زمانی که Entropy Pool خالی باشد، dev/random/ بلوکه میشود و هیچ عددی تولید نمیکند تا یک اتفاقی در سیستم، همچون حرکت ماوس یا فشرده شدن یکی از دکمههای کیبورد، رخ دهد و این در حالی است که dev/urandom/ تاحدودی سهلگیرتر است و برای تولید اعداد تصادفی از امکانات داخلی خودش استفاده میکند.