Thursday, July 2, 2015


1. Environment variables
Biến môi trường thường được dùng để chứa các thông tin như là options hoặc các đường dẫn (path) đến một thư mục nào đó.
Để show các biến môt trường mặc định của Linux OS và một số phần mềm tạo ra, bạn dùng lệnh env:

 $ env  
 XDG_VTNR=1  
 MATE_DESKTOP_SESSION_ID=this-is-deprecated  
 SSH_AGENT_PID=1421  
 XDG_SESSION_ID=1  
 HOSTNAME=localhost.localdomain  
 XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/ninhld  
 IMSETTINGS_INTEGRATE_DESKTOP=yes  
 GPG_AGENT_INFO=/home/ninhld/.cache/keyring-fbkBhK/gpg:0:1  
 TERM=xterm-256color  
 SHELL=/bin/bash  
 HISTSIZE=1000  
 WINDOWID=73400351  
 GNOME_KEYRING_CONTROL=/home/ninhld/.cache/keyring-fbkBhK  
 QTDIR=/usr/lib64/qt-3.3  
 QTINC=/usr/lib64/qt-3.3/include  
 IMSETTINGS_MODULE=IBus  
 QT_GRAPHICSSYSTEM_CHECKED=1  
 USER=ninhld  
 LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.axv=38;5;13:*.anx=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.axa=38;5;45:*.oga=38;5;45:*.spx=38;5;45:*.xspf=38;5;45:  
 XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0  
 XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0  
 SSH_AUTH_SOCK=/home/ninhld/.cache/keyring-fbkBhK/ssh  
 SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/1324,unix/unix:/tmp/.ICE-unix/1324  
 PATH=/usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/ninhld/.local/bin:/home/ninhld/bin  
 MAIL=/var/spool/mail/ninhld  
 DESKTOP_SESSION=mate  
 QT_IM_MODULE=xim  
 PWD=/home/ninhld  
 XMODIFIERS=@im=ibus  
 GNOME_KEYRING_PID=1320  
 LANG=en_US.utf8  
 KDE_IS_PRELINKED=1  
 GDM_LANG=en_US.utf8  
 KDEDIRS=/usr  
 GDMSESSION=mate  
 HISTCONTROL=ignoredups  
 HOME=/home/ninhld  
 XDG_SEAT=seat0  
 SHLVL=2  
 LOGNAME=ninhld  
 QTLIB=/usr/lib64/qt-3.3/lib  
 DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-MoTJpiQTi2,guid=1471c082de74b829c532fffc5593dfa5  
 LESSOPEN=||/usr/bin/lesspipe.sh %s  
 XDG_RUNTIME_DIR=/run/user/1000  
 DISPLAY=:0.0  
 CCACHE_HASHDIR=  
 COLORTERM=mate-terminal  
 XAUTHORITY=/var/run/lightdm/ninhld/xauthority  
 _=/usr/bin/env  


Biến môi trường mặc định:

Để có thể show nội dung của một biến môi trường cụ thể nào đó bạn dùng lệnh echo:
 [ninhld@localhost env]$ echo $HOME  
 /home/ninhld  
 [ninhld@localhost env]$   
 [ninhld@localhost env]$   
 [ninhld@localhost env]$ echo $PATH  
 /usr/lib64/qt-3.3/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/ninhld/.local/bin:/home/ninhld/bin  
 [ninhld@localhost env]$   

Phạm vi hoạt động biến môi trường:
+ Local
Biến chỉ có giá trị trong phạm vi ngữ cảnh của terminal, các script hoặc chương trình khác không thể đọc được nội dung của biến
+ Global
Phạm vị toàn cục, các script hoặc chương trình ngoài có thể đọc được nội dung biến, để tạo ra biến global dùng lệnh export trên terminal

Ví dụ có một Shell script để show các biến môi trường như sau:
env.sh
 #!/bin/sh  
 echo "HELLO=$HELLO"
 echo "XINCHAO=$XINCHAO"  

Command
 [ninhld@localhost env]$   
 [ninhld@localhost env]$ HELLO=hello             #bien local
 [ninhld@localhost env]$ export XINCHAO=xinchao  #bien global
 [ninhld@localhost env]$     
 [ninhld@localhost env]$ ./env.sh   
 HELLO=             #khong doc duoc 
 XINCHAO=xinchao    #doc duoc gia tri
 [ninhld@localhost env]$  


2. Parameter variable
Là các đối số được đưa vào một Shell script, gần giống như đối số đưa vào một hàm trong C/C++.



para.sh

 #!/bin/sh  
 echo "para1 = $1"  
 echo "para2 = $2"  
 echo "para3 = $3"  
   
 echo "\$* = $*"  
 echo "\$@ = $@"  
   

Execute
 [ninhld@localhost env]$   
 [ninhld@localhost env]$ ./para.sh pa1 pa2 pa3  
 para1 = pa1  
 para2 = pa2  
 para3 = pa3  
 $* = pa1 pa2 pa3  
 $@ = pa1 pa2 pa3  
 [ninhld@localhost env]$  

3. Một số biến môi trường quan trọng
+ PATH
Chỉ đường dẫn đến các thư mục chứa file chương trình nhị phân hoặc script.

Ex:
 [ninhld@localhost env]$   
 [ninhld@localhost env]$ export PATH=$PATH:/home/ninhld/Github/eslinuxprogramming/Shell  
 [ninhld@localhost env]$      
 [ninhld@localhost env]$ cd $HOME  
 [ninhld@localhost ~]$    
 [ninhld@localhost ~]$ para.sh pa1 pa2 pa3  
 para1 = pa1  
 para2 = pa2  
 para3 = pa3  
 $* = pa1 pa2 pa3  
 $@ = pa1 pa2 pa3  
 [ninhld@localhost ~]$   

Chương trình para.sh ở trong thư mục Shell, nhờ việc export biến PATH mà para.sh có thể được chạy ở bất cứ đâu mà không cần thư mục làm việc hiện tại trên terminal phải là Shell.



+ LD_LIBRARY_PATH
Biến môi trường của linker chỉ dẫn đến thư mục chứa các thư viện đã được installed, dùng trong quá trình compile thư viện cũng như khi chạy chương trình ứng dụng có sử dụng thư viện đã installed đó.
Bài viết liên quan:
+ Makefile
+ Cross compiling the libraries


PKG_CONFIG_PATH
Biến môi trường chỉ dẫn đến thư mục chứa các file ".pc", được dùng bởi chương trình pkg-config, dùng trong quá trình compile thư viện.
Bài viết liên quan:
+ Pkg-config

Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Lập trình hệ thống nhúng Linux . Powered by Luong Duy Ninh -