echo $NAME :NAME:环境变量名称$ lll
-bash: lll: command not found
PATH 就承担着命令搜索的功能;搜索命令时,会在当前目录下找,. /代表的是绝对路径;绝对路径下没有,再去默认路径下搜索。
. /,就能跑的两种方法:
PATH 路径下。[saul@VM-12-7-centos tt727]$ ls
makefile t1 t1.c
[saul@VM-12-7-centos tt727]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/saul/.local/bin:/home/saul/bin
[saul@VM-12-7-centos tt727]$ sudo cp t1 /usr/sbin //第一种
[saul@VM-12-7-centos tt727]$ PATH=$PATH:/home/saul/tt727 //第二种
[saul@VM-12-7-centos tt727]$my_envvar="cmd define local var"
[saul@VM-12-7-centos tt727]$echo $my_envvar
export my_envvar;在进程内部就可以通过printf("%s\n",getenv("my_envvar"));使用变量。bash是大部分程序的父进程,同时可以证明:环境变量通常具有全局属性,可以被子进程继承下去K---V模型。
main函数参数获得:env的效果。#include
int main(int argc, char *argv[], char *env[])
{
int i = 0;
for(; env[i]; i++){
printf("%s\n", env[i]);
}
return 0;
}
#include
int main(int argc, char *argv[])
{
extern char **environ;
int i = 0;
for(; environ[i]; i++){
printf("%s\n", environ[i]);
}
return 0;
}
方法三:通过系统调用getenv:常用getenv和putenv函数来访问或设置特定的环境变量。
#include
#include
int main()
{
printf("%s\n", getenv("PATH"));
return 0;
}
int main(int argc, char *argv[])
[saul@VM-12-7-centos tt726]$vim t1.c
int main(int argc,char* argv[])
{
for(int i=0;i<argc;i++)//for循环内部创建变量 需要支持c99标准
{
printf("argv[%d]:%s\n",i,argv[i]);
}
return 0;
}
[saul@VM-12-7-centos tt726]$ ./t1 arg arg1 arg2
argv[0]:./t1
argv[1]:arg
argv[2]:arg1
argv[3]:arg2
makefile 文件:[saul@VM-12-7-centos tt727]$ cat makefile
t1:t1.c
gcc -o $@ $^ -std=c99
.PHONY:clean
clean:
rm t1
ls -a -l 的命令一样,实现同一个程序,可以设计出不同的业务功能。再来一组感受一下 main函数 的命令行参数:
[saul@VM-12-7-centos tt726]$ vim t1.c
#include
#include
#include
void Usae(char* proc)
{
printf("Usage:%s -[a|s] x y\n",proc); //该这么用
}
int main(int argc,char* argv[])
{
if(argc != 4)
{
Usae(argv[0]);//告诉使用者格式不对
return 1;
}
int x= atoi(argv[2]);
int y=atoi(argv[3]);
if(strcmp(argv[1],"-a")==0)
{
printf("%d + %d = %d\n",x,y,x+y);
}
else if(strcmp(argv[1],"-s")==0)
{
printf("%d - %d = %d",x,y,x-y);
}
else{
Usae(argv[0]);
}
return 0;
}
[saul@VM-12-7-centos tt726]$ ./t1
Usage:./t1 -[a|s] x y //使用方法不对...
[saul@VM-12-7-centos tt726]$ ./t1 -a 24 30 //微型计算器...
24 + 30 = 54