- Back to Home »
- Beginning Linux Programming »
- Environment Variables
Saturday, August 1, 2015
1. Get and Set environment variables
Thư viện stdlib.h cung cấp các hàm để chương trình tương tác với các biến môi trường bên ngoài.
#include <stdlib.h>
char *getenv(const char *name);
int putenv(const char *string);
getenv lấy giá trị của biến môi trường.
+ name
Tên của biến môi trường
+ return
Trả về NULL nếu name không tồn tại.
Trả về string rỗng nếu name tồn tại nhưng không có giá trị.
Trả về giá trị của name nếu name tồn tại và có giá trị.
putenv gán giá trị cho biến môi trường.
+ string
Chuỗi gán biến môi trường và giá trị của nó.
+ return
Trả về -1 nếu coa lỗi.
Ex:
environ.c
#include <stdio.h>
#include <stdlib.h>
int main ()
{
char *tmp;
tmp = getenv("PATH");
if(tmp)
printf("PATH : %s\n", tmp);
tmp = getenv("HOME");
if(tmp)
printf("HOME : %s\n", tmp);
tmp = getenv("ROOT");
if(tmp){
printf("ROOT : %s\n", tmp);
} else{
char *root = "ROOT=/root";
putenv(root);
printf("set ROOT : %s\n", getenv("ROOT"));
}
return(0);
}
Compile & Execute:
$ gcc environ.c
$ ./a.out
PATH : /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin
HOME : /home/ninhld
set ROOT : /root
2. The environ Variable
#include <stdlib.h>
extern char **environ;
environ là mảng chứa tất cả các biến môi trường và giá trị của chúng.
Ex:
showenv.c
#include <stdlib.h>
#include <stdio.h>
extern char **environ;
int main()
{
char **env = environ;
while(*env) {
printf("%s\n",*env);
env++;
}
exit(0);
}
Compile & Execute:
$ gcc showenv.c
$ ./a.out
XDG_VTNR=1
MATE_DESKTOP_SESSION_ID=this-is-deprecated
SSH_AGENT_PID=1418
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-PhSdLU/gpg:0:1
TERM=xterm-256color
SHELL=/bin/bash
HISTSIZE=1000
HELLO=hello
WINDOWID=67108895
OLDPWD=/home/ninhld
GNOME_KEYRING_CONTROL=/home/ninhld/.cache/keyring-PhSdLU
QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
IMSETTINGS_MODULE=IBus
QT_GRAPHICSSYSTEM_CHECKED=1
USER=ninhld
...