آموزش تصویری انواع متغیرها در لینوکس با مثالهای کاربردی
با انواع متغیرها در لینوکس بهمراه مثالهای کاربردی و تصویری آشنا خواهید شد که برای یونیکس هم صدق میکند.
متغیرها توسط برنامههای کاربردی و فرایندها مورد استفاده قرار میگیرند یا بین دیگر به اشتراک گذاشته میشوند.
دستورات این آموزش در shell یا پوسته bash اجرا شده است که پوسته فرض اکثر سیستم عاملهای لینوکسی است.
پیشنیازها
- داشتن یک سیستم کامپیوتری
- نصب بودن یک توزیع لینوکس بر روی کامپیوتر
- آشنایی نسبی با ترمینال یا SSH در لینوکس
- داشتن یک لبخند بر صورت
متغیر در لینوکس
متغیر یک pointer یا اشاره گر به داده واقعی است.
هر متغیر دارای نام و مقدار است که در shell یا پوسته تعریف میشوند یا از قبل تعریف شده اند.
امکان ایجاد و حذف و بروزرسانی یک متغیر در پوسته های لینوکس مثل bash وجود دارد.
نام متغیر
نام متغیر یا variable شامل حروف کوچک وبزرگ a تا z و اعداد 0 تا 9 است و میتواند با حروف و کاراکتر ـ شروع شود ولی اعداد مجاز نیست.
مثال
متغیرها با نامهای زیر معتبر هستند.
1 2 3 4 |
_ALI TOKEN_A VAR_1 VAR_2 |
مثال
متغیرها با نامهای زیر نامعتبر هستند.
1 2 3 4 |
2_VAR -VARIABLE VAR1-VAR2 VAR_A! |
سه کاراکترهای ! و * و – در شل معنای خاصی دارند بنابراین امکان استفاده از آنها در نام متغیر نیست.
مقدار متغیر
یک متغیر میتواند مقدارهای مختلفی مثل اعداد، متن، نام فایل، آرایه و انواع دیگر باشد.
در زمان تعریف یا مقداردهی متغیر نیاز نیست مشخص کنید که متغیر بصورت عدد یا رشته یا آرایه است.
این نکته مهم را به یاد داشته باشید که بین نام متغیر، علامت = و مقدار متغیر نباید فاصله باشد و باید پشتسرهم نوشته شوند.
انواع متغیرها در لینوکس
متغیرها در پوسته bash به دو نوع محلی و سراسری تقسیم می شوند که در ادامه با آنها آشنا خواهید شد.
متغیرهای محلی یا Local variables
یکی از انواع متغیرها در لینوکس، متغیرهای محلی هستند که باید در shell تعریف شوند تا امکان استفاده از آنها وجود داشته باشد.
متغیرهای محلی بهتر است با حروف کوچک انگلیسی نوشته شود تا از متغیرهای سراسری متمایز باشند.
تعریف متغیر محلی
با استفاده از علامت = مقدار به متغیر اختصاص داده میشود. نام variable در سمت چپ و مقدار آن در سمت راست = قرار میگیرد.
مقدار=نام
مثال
1 2 3 |
[root@vps test]# var=test1 [root@vps test]# echo $var test1 |
برای نمایش مقدار متغیر از دستور echo استفاده میشود.
برای زمانی که مقدار یک متغیر یک رشته طولانی یا بین کلمات فاصله هست حتما اول و انتهای مقدار متغیر از double quotation یعنی ” استفاده کنید.
زمانی که از ” استفاده میکنید امکان این را دارید که در مقداردهی یک متغیر دیگر از یک متغیر از قبل تعریف شده استفاده کنید.
مثال
در خط اول در زمان تعریف متغیر از ” استفاده نشده است و کلمه دوم یعنی khosh بعنوان یک دستور نامعتبر در پوسته شناخته شده است.
در خط بعدی این مشکل با ” رفع شده است.
1 2 3 4 5 6 7 8 |
[root@vps test]# var1=salam khosh amadid bash: khosh: command not found [root@vps test]# var1="salam khosh amadid" [root@vps test]# echo $var1 salam khosh amadid [root@vps test]# var2="$var1 vaght bekheir" [root@vps test]# echo $var2 salam khosh amadid vaght bekheir |
البته میتوانید از single quotation یا ‘ استفاده کنید ولی بر خلاف ” ، امکان استفاده از متغیرهای قبلی در مقداردهی به یک متغیر دیگر نیست.
مثال
1 2 3 4 5 6 |
[root@vps test]# var1='salam khosh amadid' [root@vps test]# echo $var1 salam khosh amadid [root@vps test]# var2='$var1 vaght bekheir' [root@vps test]# echo $var2 $var1 vaght bekheir |
متغیرهای محلی در همان shell یا فرایند که تعریف می شوند در دسترس هستند و در پوسته ها و فرایندهای والد یا فرزند در دسترس نخواهند بود.
مثال
یک shell جدید با دستور bash ایجاد میشود که متغیر در دسترس نیست.
1 2 3 4 5 6 7 |
[root@vps test]# var1=salam [root@vps test]# echo $var1 salam [root@vps test]# bash [root@vps test]# echo $var1 [root@vps test]# |
مثال
پس از تعریف متغیر در پوسته، از پوسته فعلی خارج و به پوسته والد رفته و متغیر محلی فراخوانی می شد و همانطور که مشخص است در دسترس نخواهد بود.
دستیابی به متغیرهای محلی
برای مشاهده یا دستیابی به مقدار ذخیره شده در یک متغیر از علامت دلار یعنی $ بهمراه نام متغیر استفاده میشود.
مثال
1 2 3 |
[root@vps test]# var3=iran [root@vps test]# echo $var3 iran |
متغیرهای فقط خواندنی
زمانی که یک متغیر با دستور readonly بصورت فقط خواندنی تنظیم شود دیگر امکان تغییر مقدار آن متغیر نیست.
1 2 3 4 5 |
[root@vps test]# var4="salam" [root@vps test]# var4="iran" [root@vps test]# readonly var4 [root@vps test]# var4="test" bash: var4: readonly variable |
حذف متغیر
برای حذف یک متغیر محلی از shell در لینوکس میتوانید از دستور unset استفاده کنید.
کافی است در روبروی دستور unset نام متغیر را بنویسید.
مثال
1 2 3 4 5 6 7 |
[root@vps test]# var5=hi [root@vps test]# echo $var5 hi [root@vps test]# unset var5 [root@vps test]# echo $var5 [root@vps test]# |
متغیرهای سراسری یا Global variables
یکی دیگر از انواع متغیرها در لینوکس، متغیرهای سراسری (global variables) یا متغیرهای محیطی (environments variables) هستند که از قبل در shell تعریف شده اند.
امکان استفاده و دسترسی به این متغیرها در shell فرزند و فرایندهای اصلی و فرایندهای فرزند وجود دارد.
منظور از فرایند همان process است.
زمانی که جلسه (session) پوسته bash شروع میشود متغیرهای سراسری تنظیم میشوند.
متغیرهای سراسری با حروف بزرگ انگلیسی نوشته و فراخوانی میشوند.
متغیرهای سراسری برای shell ضروری هستند چون بسیاری از توابع shell در حال استفاده از این متغیرها هستند بنابراین بدون اطلاع از کاربرد آنها تغییری در مقدار آنها اعمال نکنید.
مشاهده تمامی متغیرهای محیطی در لینوکس
در لینوکس یک بسته یا package با نام coreutils وجود دارد که مجموعه ای از ابزارهای پایه GNU هست که env و printenv نیز جزئی از این ابزارها هستند.
env و printenv برای نمایش تمامی متغیرهای محیطی در لینوکس استفاده میشود.
مثال
در تصویر زیر خروجی دستور env مشخص است که با خروجی دستور printenv کاملا یکسان است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[root@vps test]# env XDG_SESSION_ID=6564 HOSTNAME=vps.parsandroid.com SHELL=/bin/bash TERM=screen HISTSIZE=1000 SSH_CLIENT=5.53.41.38 3651 22 SSH_TTY=/dev/pts/0 USER=root LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33; 01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex= 01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01; 31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31 :*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;3 1:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*. jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo =01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01 ;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35 :*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35: *.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:* .mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.as f=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01 ;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35: *.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.m idi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa= 01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36: TERMCAP=SC|screen|VT 100/ANSI X3.64 virtual terminal:\ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\ :do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\ :le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:\ :li#35:co#100:am:xn:xv:LP:sr=\EM:al=\E[L:AL=\E[%dL:\ :cs=\E[%i%d;%dr:dl=\E[M:DL=\E[%dM:dc=\E[P:DC=\E[%dP:\ :im=\E[4h:ei=\E[4l:mi:IC=\E[%d@:ks=\E[?1h\E=:\ :ke=\E[?1l\E>:vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l:\ |
مثال
در حال حاضر ارزشمندترین متغیر محیطی در این لیست متغیر محیطی PATH است.
این متغیر، برای نگهداری مسیرهایی استفاده میشود که در زمان وارد کردن یک دستور، پوسته bash باید در آنها به دنبال دستور بگردد و در صورت یافتن، آن را اجرا کند.
هر مسیر با کاراکتر : که در انگلیسی colon نامیده میشود از مسیرهای دیگر تفکیک شده است.
اولویت مسیرها از چپ به راست است بنابراین مسیرهای سمت چپ زودتر جستجو میشوند.
1 2 |
[root@vps ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin |
پوسته bash در لینوکس از پوسته اصلی یونیکس یعنی Bourne مشتق شده است بنابراین متغیرهایی دارند که در هر دو مشترک است.
متغیرهای رزرو شده پوسته Bourne
جدول زیر لیستی از متغیرها را نمایش میدهد که از قبل برای پوسته یا shell با نام Bourne تعرف شدهاند.
گزینه | توصیف |
---|---|
CDPATH | لیستی از دایرکتوری ها که با : از هم جدا شده و برای جستجو در مسیرها در زمان استفاده از دستور cd استفاده میشود. |
HOME | فولدر home کاربر فعلی را مشخص می کند و کاراکتر ~ نیز در لینوکس به مسیر این فولدر اشاره میکند |
IFS | لیستی از کاراکترها که ستون یا فیلدها را هم جدا می کند، زمانی استفاده میشود که shell کلمات را از یکدیگر جهت انبساط جدا میکند |
اگر مقدار این متغیر برابر نام فایل باشد و مقدار متغیر MAILPATH تنظیم نشده باشد، BASH ایمیل را به کاربر وارد شده در آن فایل اطلاعرسانی میکند. | |
MAILPATH | لیستی از فایلها که با : از هم جدا شده اند و shell بصورت دوره ای فایل ها را به ترتیب برای ایمیل های جدید بررسی میکند |
OPTARG | مقدار آرگومان آخرین option پردازش شده توسط getopts |
OPTIND | نشانگر آرگومان آخرین option پردازش شده توسط getopts |
PATH | لیستی از دایرکتوری که با : از یکدیگر جدا شده اند و shell در این دایرکتوری به دنبال دستورات میگردد |
PS1 | مخفف primary prompt string است و مقدار پیش فرض آن “‘\s-\v\$ ‘” میباشد |
PS2 | مخفف secondary prompt string است و مقدار پیش فرض آن “‘> ‘” میباشد |
متغیرهای رزرو شده پوسته bash
جدول زیر لیستی از متغیرها را نمایش میدهد که از قبل برای پوسته یا shell با نام bash تعرف شدهاند.
گزینه | توصیف |
---|---|
auto_resume | این متغیر نحوه تعامل shell با user و job control را کنترل میکند. |
BASH | مسیر مطلق BASH که در حال حاضر اجرا شده است را نمایش میدهد |
BASH_ENV | مقدار این متغیر مسیر یک فایل را مشخص می کند که برای انجام debug قبل از اجرای یک فایل شل اسکریپت استفاده میشود |
BASH_VERSION | نسخه BASH را نمایش میدهد. |
BASH_VERSINFO | یک آرایه فقط خواندنی که عناصر آن اطلاعات نسخه BASH را نگهداری میکند |
COLUMNS | توسط دستور select جهت تشخیص عرض ترمینال در زمان چاپ لیست های انتخاب شده استفاده میشود. با دریافت سیگنال SIGWINCH به طور خودکار تنظیم میشود. |
COMP_CWORD | نشانگر به موقعیت کلمه ای از کلمات داخل متغیر ${COMP_WORDS} که مکان نما به آن اشاره میکند |
COMP_LINE | خط فرمان فعلی را نمایش میدهد |
COMP_POINT |
نشانگر موقعیت مکان نما فعلی نسبت به ابتدای دستور فعلی
|
COMP_WORDS |
یک متغیر آرایه متشکل از تک تک کلمات در خط فرمان فعلی
|
COMPREPLY | یک متغیر آرایه که Bash از آن تکمیلهای احتمالی ایجاد شده توسط یک تابع پوسته را که توسط تسهیلات تکمیل قابل برنامهریزی فراخوانی شده است را میخواند. |
DIRSTACK | یک متغیر آرایه حاوی محتوای فعلی پشته دایرکتوری. |
EUID | شناسه یا شماره effective user ID کاربر فعلی |
FCEDIT | ویرایشگری که در دستور fc (built-in) با گزینه e- بصورت پیشفرض استفاده میشود |
FIGNORE |
لیستی از پسوندهای جدا شده با : که باید هنگام تکمیل نام فایل نادیده گرفته شوند
|
FUNCNAME |
نام هر تابع شل که حال اجرا است
|
GLOBIGNORE |
لیستی از الگوهای جدا شده با : که مجموعهای از نام فایل ها را تعریف میکند که باید با گسترش نام فایل نادیده گرفته شوند.
|
GROUPS |
یک متغیر آرایه حاوی لیست گروه هایی که کاربر فعلی عضوی از آنهاست
|
histchars |
حداکثر سه کاراکتر که گسترش history، جایگزینی سریع و نشانهگذاری را کنترل میکنند
|
HISTCMD |
شماره دستور در history یا نشانگر در لیست history دستور فعلی.
|
HISTCONTROL |
تعیین می کند که آیا دستوری به فایل تاریخچه اضافه شود یا خیر
|
HISTFILE |
نام فایلی که history ترمینال لینوکس در آن ذخیره میشود. مقدار پیش فرض bash_history./~ است.
|
HISTFILESIZE |
حداکثر تعداد خطوط موجود در فایل history، به طور پیش فرض 500 است
|
HISTIGNORE |
لیستی از الگوهای جدا شده با : مورد استفاده برای تصمیم گیری اینکه کدام خطوط فرمان باید در لیست history ذخیره شوند
|
HISTSIZE |
حداکثر تعداد دستورات برای به خاطر سپردن در لیست تاریخچه، پیش فرض 500 است.
|
HOSTFILE |
حاوی نام فایلی با فرمت etc/hosts/ است که باید زمانی خوانده شود که پوسته نیاز به کامل کردن hostname دارد
|
HOSTNAME |
نام میزبان یا host فعلی
|
HOSTTYPE |
رشته ای که ماشین Bash ;که در حال اجرا است را توصیف میکند.
|
IGNOREEOF |
عملکرد پوسته را هنگام دریافت یک کاراکتر EOF به عنوان تنها ورودی کنترل میکند.
|
INPUTRC |
نام فایل مقداردهی اولیه Readline – پیشفرض فعلی یعنی etc/inputrc/ را نادیده میگیرد
|
LANG |
برای تعیین دسته محلی یا locale category یا lc دسته انتخاب نشده استفاده میشود که فاقد متغیری است که با LC_ شروع می شود
|
LC_ALL |
این متغیر نادیده میگیرد مقدار LANG و هر متغیر LC_ دیگری را که یک دسته محلی را مشخص می کند
|
LC_COLLATE |
این متغیر ترتیب collation مورد استفاده در هنگام مرتب سازی نتایج گسترش نام فایل را تعیین میکند و رفتار range expressions، کلاسهای همارزی، و توالیهای تطبیق را در بسط نام فایل و تطبیق الگو تعیین میکند
|
LC_CTYPE |
این متغیر تفسیر کاراکترها و رفتار کلاسهای کاراکتر را در بسط نام فایل و تطبیق الگو تعیین میکند
|
LC_MESSAGES |
این متغیر تعیین میکند چه locale ایی باید استفاده شود برای ترجمه رشتههای بین ” و ” که علامت “$” قبل از آنها وجود دارد
|
LC_NUMERIC |
این متغیر دسته locale مورد استفاده برای قالب بندی اعداد را تعیین میکند
|
LINENO |
شماره خط در اسکریپت یا تابع پوسته در حال اجرا
|
LINES |
توسط دستور select که از نوع built-in است برای تعیین طول ستون برای چاپ لیست انتخاب شده استفاده میشود
|
MACHTYPE |
رشته ای که به طور کامل نوع سیستمی که Bash روی آن اجرا می شود را با فرمت استاندارد GNU بصورت CPU-COMPANY-SYSTEM توصیف می کند
|
MAILCHECK |
هر چند ثانیه shell باید ایمیل را در فایل های مشخص شده در متغیرهای MAILPATH یا MAIL بررسی کند
|
OLDPWD |
دایرکتوری کاری قبلی که توسط دستور cd (دستور از نوع built-in) تنظیم شده است را نمایش میدهد.
|
OPTERR |
اگر روی مقدار 1 تنظیم شود، Bash پیام های خطای ایجاد شده توسط getopts (دستور از نوع built-in) داخلی را نمایش میدهد.
|
OSTYPE |
رشته ای که Bash در حال اجرا در سیستم عامل را توصیف میکند
|
PIPESTATUS |
یک متغیر آرایه ای که حاوی لیستی از مقادیر وضعیت خروج فرآیندها که اخیرا بصورت پیش زمینه در خط لوله اجرا شدهاند (که ممکن است فقط شامل یک signal باشد)
|
POSIXLY_CORRECT |
اگر این متغیر هنگام شروع bash در environment باشد، پوسته وارد حالت POSIX میشود.
|
PPID |
شناسه فرآیند مربوط به فرآیند والد پوسته یا shell’s parent process ID
|
PROMPT_COMMAND |
اگر تنظیم شود، مقدار به عنوان دستوری برای اجرا قبل از چاپ هر فرمان اصلی (PS1) تفسیر میشود.
|
PS3 |
مقدار این متغیر به عنوان اعلان دستور select استفاده می شود. پیشفرض “‘#؟” است.
|
PS4 |
مقدار عبارت است از دستوری که قبل از اعلان خط فرمان هنگام تنظیم گزینه x- چاپ میشود. پیشفرض روی “”+” است.
|
PWD |
دایرکتوری فعلی که توسط دستور cd تنظیم شده است.
|
RANDOM |
هر بار که این پارامتر ارجاع داده میشود، یک عدد صحیح تصادفی بین 0 تا 32767 تولید میشود. با اختصاص یک مقدار به این متغیر، مولد اعداد تصادفی ایجاد میشود.
|
REPLY | متغیر پیش فرض برای دستور read که از نوع built-in است |
SECONDS |
این متغیر به تعداد ثانیههایی که پوسته راهاندازی شده است گسترش مییابد
|
SHELLOPTS |
فهرستی از گزینههای پوسته فعال که با : جدا شده است
|
SHLVL |
هر بار که نمونه جدیدی از Bash شروع میشود یک عدد افزایش مییابد.
|
TIMEFORMAT |
مقدار این پارامتر به عنوان یک رشته فرمت استفاده میشود که مشخص کننده اطلاعات زمانبندی خطوط لوله با پیشوند رزرو شده time نمایش داده شود.
|
TMOUT |
اگر روی مقداری بیشتر از صفر تنظیم شود، TMOUT به عنوان مهلت زمانی پیشفرض برای دستور read در نظر گرفته میشود. در یک پوسته تعاملی، مقدار به عنوان تعداد ثانیههای انتظار برای ورودی تفسیر میشود پس از صدور اعلان اولیه هنگامی که پوسته تعاملی است. اگر ورودی نرسد، Bash پس از آن تعداد ثانیه خاتمه مییابد.
|
UID |
شناسه کاربری واقعی و عددی کاربر فعلی
|
تعریف متغیر محیطی یا سراسری
در سه سطح مختلف امکان تعریف یک متغیر سراسری وجود دارد. اکثرا سایتها یا منابع آموزشی به این نکته اصلا اشاره نکره اند ولی در ایران ادمین بصورت کامل بهمراه مثالهای تصویری آشنا خواهید شد.
سطح ترمینال
زمانی که دستور export را در برای یک متغیر محلی استفاده کنید آن متغیر تا زمانی که ترمینال باز باشد در پوسته ها و فرایندهای والد و فرزند در دسترس و قابل فراخوانی است.
زمانی که پنجره ترمینال فعلی بسته یا قطع شود امکان دسترسی به آن متغیر وجود نخواهد داشت.
مثال
با export متغیر بصورت سراسری در ترمینال تعریف شده است و تا زمانی که ترمینال باز باشد مقدار متغیر نیز در دسترس خواهد بود.
با دستور bash پوسته والد ایجاد میشود و همچنان متغیر var1 در دسترس و قابل فراخوانی است.
1 2 3 4 5 6 7 |
[root@vps ~]# var1=22 [root@vps ~]# echo $var1 22 [root@vps ~]# export var1 [root@vps ~]# bash [root@vps ~]# echo $var1 22 |
سطح کاربر
زمانی که با دستور export یک متغیر در یکی از فایل های bashrc./~ یا profile./~ یا bash_profile./~ تعریف شود آن متغیر بصورت دائمی برای آن کاربر همیشه در ترمینال در دسترس است.
کاراکتر ~ به معنای فولدر home آن کاربر است.
فرض کنید شما کاربر root هستید و فولدر home کاربر root بصورت root/ باشد بنابراین مسیر فایلها بصورت root/.bashrc/ یا root/.profile/ یا root/.bash_profile/ میباشد.
مثال
در تصویر زیر تعریف متغیر برای کاربر root در فایل root/.bashrc/ انجام شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
[root@vps ~]# pwd /root [root@vps ~]# cat .bashrc # .bashrc # User specific aliases and functions alias rm='rm -i' alias cp='cp -i' alias mv='mv -i' # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi export name=iran [root@vps ~]# echo $name iran [root@vps ~]# bash [root@vps ~]# echo $name iran |
سطح سیستم عامل
زمانی که یک متغیر در فایل etc/environment/ اضافه شود آن متغیر در سیستم عامل توسط تمامی کاربران یا برنامه ها در دسترس و قابل فراخوانی است.
اگر ترمینال بسته شود یا سیستم عامل ریستارت شود این متغیر در دسترس است چون بصورت دائمی در سیستم عامل تعریف شده است.
مثال
1 2 3 4 |
[root@vps ~]# cat /etc/environment my_color=red [root@vps ~]# echo $my_color red |
سخن پایانی
برچسبها: gnu/linux, unix, آموزش لینوکس