进程概念(下)
进程概念(下)
·
文章目录
4. 命令行参数和环境变量

[gsm@VM-4-3-centos lesson13]$ ls -l
total 16
-rwxrwxr-x 1 gsm gsm 8360 Oct 28 22:35 a.out
-rw-rw-r-- 1 gsm gsm 258 Oct 28 22:35 test.c
[gsm@VM-4-3-centos lesson13]$ ls
a.out test.c
[gsm@VM-4-3-centos lesson13]$ ls -l -a -n
total 24
drwxrwxr-x 2 1001 1001 4096 Oct 28 22:35 .
drwxrwxr-x 12 1001 1001 4096 Oct 28 22:32 ..
-rwxrwxr-x 1 1001 1001 8360 Oct 28 22:35 a.out
-rw-rw-r-- 1 1001 1001 258 Oct 28 22:35 test.c
[gsm@VM-4-3-centos lesson13]$ rm a.out
[gsm@VM-4-3-centos lesson13]$ ll
total 4
-rw-rw-r-- 1 gsm gsm 258 Oct 28 22:35 test.c
[gsm@VM-4-3-centos lesson13]$ mv test.c code.c
[gsm@VM-4-3-centos lesson13]$ ll
total 4
-rw-rw-r-- 1 gsm gsm 258 Oct 28 22:35 code.c
[gsm@VM-4-3-centos lesson13]$ ls > Makefile
[gsm@VM-4-3-centos lesson13]$ ll
total 8
-rw-rw-r-- 1 gsm gsm 258 Oct 28 22:35 code.c
-rw-rw-r-- 1 gsm gsm 16 Oct 29 11:54 Makefile
[gsm@VM-4-3-centos lesson13]$ vim Makefile
[gsm@VM-4-3-centos lesson13]$ cat Makefile
code:code.c
gcc -o $@ $^
.PHONY:clean
clean:
rm -f code
[gsm@VM-4-3-centos lesson13]$ vim code.c
[gsm@VM-4-3-centos lesson13]$ head -12 code.c
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("argc: %d\n", argc);
for (int i = 0; i < argc; i++)
{
printf("argv[%d]: %s\n", i, argv[i]);
}
return 0;
}
[gsm@VM-4-3-centos lesson13]$ make
gcc -o code code.c
code.c: In function ‘main’:
code.c:7:5: error: ‘for’ loop initial declarations are only allowed in C99 mode
for (int i = 0; i < argc; i++)
^
code.c:7:5: note: use option -std=c99 or -std=gnu99 to compile your code
make: *** [code] Error 1
[gsm@VM-4-3-centos lesson13]$ vim Makefile
[gsm@VM-4-3-centos lesson13]$ cat Makefile
code:code.c
gcc -o $@ $^ -std=c99
.PHONY:clean
clean:
rm -f code
[gsm@VM-4-3-centos lesson13]$ make
gcc -o code code.c -std=c99
[gsm@VM-4-3-centos lesson13]$ ll
total 20
-rwxrwxr-x 1 gsm gsm 8360 Oct 29 12:09 code
-rw-rw-r-- 1 gsm gsm 508 Oct 29 12:06 code.c
-rw-rw-r-- 1 gsm gsm 67 Oct 29 12:09 Makefile
[gsm@VM-4-3-centos lesson13]$ ./code
argc: 1
argv[0]: ./code
[gsm@VM-4-3-centos lesson13]$ ./code 1
argc: 2
argv[0]: ./code
argv[1]: 1
[gsm@VM-4-3-centos lesson13]$ ./code 1 2
argc: 3
argv[0]: ./code
argv[1]: 1
argv[2]: 2
[gsm@VM-4-3-centos lesson13]$ ./code 1 2 3
argc: 4
argv[0]: ./code
argv[1]: 1
argv[2]: 2
argv[3]: 3
[gsm@VM-4-3-centos lesson13]$ ./code 1 2 3 4
argc: 5
argv[0]: ./code
argv[1]: 1
argv[2]: 2
argv[3]: 3
argv[4]: 4
[gsm@VM-4-3-centos lesson13]$ ./code 1 2 3 4 5
argc: 6
argv[0]: ./code
argv[1]: 1
argv[2]: 2
argv[3]: 3
argv[4]: 4
argv[5]: 5
[gsm@VM-4-3-centos lesson13]$ ./code abcd xyz
argc: 3
argv[0]: ./code
argv[1]: abcd
argv[2]: xyz
[gsm@VM-4-3-centos lesson13]$ ll
total 20
-rwxrwxr-x 1 gsm gsm 8360 Oct 29 12:09 code
-rw-rw-r-- 1 gsm gsm 508 Oct 29 12:06 code.c
-rw-rw-r-- 1 gsm gsm 67 Oct 29 12:09 Makefile
[gsm@VM-4-3-centos lesson13]$ vim code.c
[gsm@VM-4-3-centos lesson13]$ head -37 code.c
#include <stdio.h>
#include <string.h>
// code -opt1/-opt2/-opt3
int main(int argc, char* argv[])
{
if (argc != 2)
{
printf("Usage: code opt\n");
return 1;
}
if (strcmp(argv[1], "-opt1") == 0)
{
printf("功能1\n");
}
else if (strcmp(argv[1], "-opt2") == 0)
{
printf("功能2\n");
}
else if (strcmp(argv[1], "-opt3") == 0)
{
printf("功能3\n");
}
else
{
printf("默认功能\n");
}
// printf("argc: %d\n", argc);
// for (int i = 0; i < argc; i++)
// {
// printf("argv[%d]: %s\n", i, argv[i]);
// }
return 0;
}
[gsm@VM-4-3-centos lesson13]$ make
gcc -o code code.c -std=c99
[gsm@VM-4-3-centos lesson13]$ ./code
Usage: code opt
[gsm@VM-4-3-centos lesson13]$ ./code -opt1
功能1
[gsm@VM-4-3-centos lesson13]$ ./code -opt2
功能2
[gsm@VM-4-3-centos lesson13]$ ./code -opt3
功能3
[gsm@VM-4-3-centos lesson13]$ ./code -opt4
默认功能
[gsm@VM-4-3-centos lesson13]$ ls
code code.c Makefile
[gsm@VM-4-3-centos lesson13]$ ls -l
total 20
-rwxrwxr-x 1 gsm gsm 8408 Oct 29 12:26 code
-rw-rw-r-- 1 gsm gsm 957 Oct 29 12:26 code.c
-rw-rw-r-- 1 gsm gsm 67 Oct 29 12:09 Makefile
[gsm@VM-4-3-centos lesson13]$ ls -al
total 28
drwxrwxr-x 2 gsm gsm 4096 Oct 29 12:26 .
drwxrwxr-x 12 gsm gsm 4096 Oct 28 22:32 ..
-rwxrwxr-x 1 gsm gsm 8408 Oct 29 12:26 code
-rw-rw-r-- 1 gsm gsm 957 Oct 29 12:26 code.c
-rw-rw-r-- 1 gsm gsm 67 Oct 29 12:09 Makefile

[gsm@VM-4-3-centos lesson13]$ ll
total 20
-rwxrwxr-x 1 gsm gsm 8408 Oct 29 12:26 code
-rw-rw-r-- 1 gsm gsm 957 Oct 29 12:26 code.c
-rw-rw-r-- 1 gsm gsm 67 Oct 29 12:09 Makefile
[gsm@VM-4-3-centos lesson13]$ vim code.c
[gsm@VM-4-3-centos lesson13]$ head -10 code.c
#include <stdio.h>
#include <string.h>
// code -opt1/-opt2/-opt3
int main(int argc, char* argv[], char* env[])
{
for (int i = 0; env[i]; i++)
{
printf("env[%d]: %s\n", i, env[i]);
}
[gsm@VM-4-3-centos lesson13]$ make
gcc -o code code.c -std=c99
[gsm@VM-4-3-centos lesson13]$ ./code
env[0]: XDG_SESSION_ID=44879
env[1]: HOSTNAME=VM-4-3-centos
env[2]: TERM=xterm
env[3]: SHELL=/bin/bash
env[4]: HISTSIZE=3000
env[5]: SSH_CLIENT=101.94.70.61 58413 22
env[6]: SSH_TTY=/dev/pts/0
env[7]: USER=gsm
env[8]: LD_LIBRARY_PATH=:/home/gsm/.VimForCpp/vim/bundle/YCM.so/el7.x86_64
env[9]: 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;31:*.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:*.asf=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:*.midi=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:
env[10]: MAIL=/var/spool/mail/gsm
env[11]: PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gsm/.local/bin:/home/gsm/bin
env[12]: PWD=/home/gsm/linux/112/lesson13
env[13]: LANG=en_US.utf8
env[14]: SHLVL=1
env[15]: HOME=/home/gsm
env[16]: LOGNAME=gsm
env[17]: SSH_CONNECTION=101.94.70.61 58413 10.0.4.3 22
env[18]: LESSOPEN=||/usr/bin/lesspipe.sh %s
env[19]: PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
env[20]: XDG_RUNTIME_DIR=/run/user/1001
env[21]: HISTTIMEFORMAT=%F %T
env[22]: OLDPWD=/home/gsm/linux/112
env[23]: _=./code
[gsm@VM-4-3-centos lesson13]$ env
XDG_SESSION_ID=44879
HOSTNAME=VM-4-3-centos
TERM=xterm
SHELL=/bin/bash
HISTSIZE=3000
SSH_CLIENT=101.94.70.61 58413 22
SSH_TTY=/dev/pts/0
USER=gsm
LD_LIBRARY_PATH=:/home/gsm/.VimForCpp/vim/bundle/YCM.so/el7.x86_64
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;31:*.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:*.asf=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:*.midi=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:
MAIL=/var/spool/mail/gsm
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gsm/.local/bin:/home/gsm/bin
PWD=/home/gsm/linux/112/lesson13
LANG=en_US.utf8
SHLVL=1
HOME=/home/gsm
LOGNAME=gsm
SSH_CONNECTION=101.94.70.61 58413 10.0.4.3 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
XDG_RUNTIME_DIR=/run/user/1001
HISTTIMEFORMAT=%F %T
OLDPWD=/home/gsm/linux/112
_=/usr/bin/env

[gsm@VM-4-3-centos lesson13]$ ll
total 8
-rw-rw-r-- 1 gsm gsm 1198 Oct 30 13:41 code.c
-rw-rw-r-- 1 gsm gsm 67 Oct 29 12:09 Makefile
[gsm@VM-4-3-centos lesson13]$ vim code.c
[gsm@VM-4-3-centos lesson13]$ head -8 code.c
#include <stdio.h>
#include <unistd.h>
#include <string.h>
// code -opt1/-opt2/-opt3
int main(int argc, char* argv[], char* env[])
{
printf("我是一个进程,我的pid: %d\n", getpid());
[gsm@VM-4-3-centos lesson13]$ make
gcc -o code code.c -std=c99
[gsm@VM-4-3-centos lesson13]$ ./code
我是一个进程,我的pid: 18081
[gsm@VM-4-3-centos lesson13]$ ls
code code.c Makefile
[gsm@VM-4-3-centos lesson13]$ pwd
/home/gsm/linux/112/lesson13
[gsm@VM-4-3-centos lesson13]$ code
-bash: code: command not found
[gsm@VM-4-3-centos lesson13]$ echo PATH
PATH
[gsm@VM-4-3-centos lesson13]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gsm/.local/bin:/home/gsm/bin
[gsm@VM-4-3-centos lesson13]$ PATH=/home/gsm/linux/112/lesson13
[gsm@VM-4-3-centos lesson13]$ code
我是一个进程,我的pid: 20879
[gsm@VM-4-3-centos lesson13]$ ls
-bash: ls: command not found
[gsm@VM-4-3-centos lesson13]$ pwd
/home/gsm/linux/112/lesson13
[gsm@VM-4-3-centos lesson13]$ whoami
-bash: whoami: command not found
[gsm@VM-4-3-centos lesson13]$ top
-bash: top: command not found
[gsm@VM-4-3-centos lesson13]$ echo $PATH
/home/gsm/linux/112/lesson13
[gsm@VM-4-3-centos lesson13]$ mkdir
-bash: mkdir: command not found
[gsm@VM-4-3-centos lesson13]$ touch
-bash: touch: command not found
这些环境变量都被加载进了bash进程内部,它是内存级的,命令行中随便改,改错了也不要紧,关闭Xshell重新打开一个就恢复了。
[gsm@VM-4-3-centos ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gsm/.local/bin:/home/gsm/bin
[gsm@VM-4-3-centos ~]$ cd linux/
[gsm@VM-4-3-centos linux]$ cd 112/
[gsm@VM-4-3-centos 112]$ cd lesson13
[gsm@VM-4-3-centos lesson13]$ ll
total 20
-rwxrwxr-x 1 gsm gsm 8408 Oct 30 13:44 code
-rw-rw-r-- 1 gsm gsm 1198 Oct 30 13:44 code.c
-rw-rw-r-- 1 gsm gsm 67 Oct 29 12:09 Makefile
[gsm@VM-4-3-centos lesson13]$ ./code
我是一个进程,我的pid: 23032
[gsm@VM-4-3-centos lesson13]$ code
-bash: code: command not found
[gsm@VM-4-3-centos lesson13]$ pwd
/home/gsm/linux/112/lesson13
[gsm@VM-4-3-centos lesson13]$ PATH=$PATH:/home/gsm/linux/112/lesson13
[gsm@VM-4-3-centos lesson13]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gsm/.local/bin:/home/gsm/bin:/home/gsm/linux/112/lesson13
[gsm@VM-4-3-centos lesson13]$ code
我是一个进程,我的pid: 23408
[gsm@VM-4-3-centos lesson13]$ cd ~
[gsm@VM-4-3-centos ~]$ pwd
/home/gsm
[gsm@VM-4-3-centos ~]$ ls -al
total 144
drwx------ 11 gsm gsm 4096 Oct 24 20:31 .
drwxr-xr-x. 4 root root 4096 Oct 9 15:32 ..
-rw------- 1 gsm gsm 61347 Oct 30 14:20 .bash_history
-rw-r--r-- 1 gsm gsm 18 Apr 1 2020 .bash_logout
-rw-r--r-- 1 gsm gsm 193 Apr 1 2020 .bash_profile
-rw-r--r-- 1 gsm gsm 351 Oct 11 20:21 .bashrc
drwxrwxr-x 3 gsm gsm 4096 Oct 9 15:34 .cache
drwxr-xr-x 2 gsm gsm 4096 Oct 21 09:36 .cgdb
drwxrwxr-x 3 gsm gsm 4096 Oct 11 20:21 .config
lrwxrwxrwx 1 gsm gsm 48 Oct 11 20:21 .cquery -> /home/gsm/.VimForCpp/cquery/config/cquery.config
-rw-rw-r-- 1 gsm gsm 79 Oct 15 23:35 .gitconfig
-rw-rw-r-- 1 gsm gsm 827 Oct 11 20:20 install.sh
-rw------- 1 gsm gsm 48 Oct 24 20:31 .lesshst
drwxrwxr-x 3 gsm gsm 4096 Oct 11 20:23 .LfCache
drwxrwxr-x 4 gsm gsm 4096 Oct 16 21:41 linux
drwx------ 3 gsm gsm 4096 Oct 11 20:23 .local
-rw-rw-r-- 1 gsm gsm 0 Oct 23 20:51 log.txt
drwxrw---- 3 gsm gsm 4096 Oct 11 20:20 .pki
-rw-rw-r-- 1 gsm gsm 104 Oct 11 20:37 test.c
drwxr-xr-x 2 gsm gsm 4096 Oct 21 09:34 .tgdb
lrwxrwxrwx 1 gsm gsm 24 Oct 11 20:21 .vim -> /home/gsm/.VimForCpp/vim
drwxrwxr-x 8 gsm gsm 4096 Oct 11 20:21 .VimForCpp
-rw------- 1 gsm gsm 913 Oct 11 20:16 .viminfo
lrwxrwxrwx 1 gsm gsm 33 Oct 11 20:21 .vimrc -> /home/gsm/.VimForCpp/vim/init.vim
-rw-rw-r-- 1 gsm gsm 22 Oct 11 20:27 .vimrc.bak_1011
lrwxrwxrwx 1 gsm gsm 38 Oct 11 20:21 .ycm_extra_conf.py -> /home/gsm/.VimForCpp/ycm_extra_conf.py
[gsm@VM-4-3-centos ~]$ vim .bashrc
[gsm@VM-4-3-centos ~]$ vim .bash_
.bash_history .bash_logout .bash_profile
[gsm@VM-4-3-centos ~]$ vim .bash_profile
[gsm@VM-4-3-centos ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
#PATH=$PATH:$HOME/.local/bin:$HOME/bin
PATH=$PATH:$HOME/.local/bin:$HOME/bin:/home/gsm/linux/112/lesson13
export PATH
[gsm@VM-4-3-centos ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gsm/.local/bin:/home/gsm/bin
[gsm@VM-4-3-centos ~]$ source .bash_profile
[gsm@VM-4-3-centos ~]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gsm/.local/bin:/home/gsm/bin:/home/gsm/.local/bin:/home/gsm/bin:/home/gsm/linux/112/lesson13
[gsm@VM-4-3-centos ~]$ code
我是一个进程,我的pid: 27792
[gsm@VM-4-3-centos ~]$ vim .bash_profile
[gsm@VM-4-3-centos ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH

[gsm@VM-4-3-centos ~]$ echo $HOME
/home/gsm
[gsm@VM-4-3-centos ~]$ su -
Password:
Last login: Sun Oct 26 20:55:14 CST 2025 from 101.94.69.4 on pts/1
Last failed login: Sat Nov 1 11:22:22 CST 2025 on pts/0
There were 8 failed login attempts since the last successful login.
[root@VM-4-3-centos ~]# whoami
root
[root@VM-4-3-centos ~]# echo $HOME
/root
[root@VM-4-3-centos ~]# pwd
/root
[root@VM-4-3-centos ~]# logout
[gsm@VM-4-3-centos ~]$ ps ajx | grep bash
24141 24142 24142 24142 pts/0 26550 Ss 1001 0:00 -bash
24142 26551 26550 24142 pts/0 26550 S+ 1001 0:00 grep --color=auto bash
[gsm@VM-4-3-centos ~]$ pwd
/home/gsm
[gsm@VM-4-3-centos ~]$ ls /proc/24142 -l
total 0
dr-xr-xr-x 2 gsm gsm 0 Nov 1 11:28 attr
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 autogroup
-r-------- 1 gsm gsm 0 Nov 1 11:28 auxv
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 cgroup
--w------- 1 gsm gsm 0 Nov 1 11:28 clear_refs
-r--r--r-- 1 gsm gsm 0 Nov 1 11:17 cmdline
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 comm
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 coredump_filter
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 cpuset
lrwxrwxrwx 1 gsm gsm 0 Nov 1 11:17 cwd -> /home/gsm
-r-------- 1 gsm gsm 0 Nov 1 11:17 environ
lrwxrwxrwx 1 gsm gsm 0 Nov 1 11:17 exe -> /usr/bin/bash
dr-x------ 2 gsm gsm 0 Nov 1 11:17 fd
dr-x------ 2 gsm gsm 0 Nov 1 11:28 fdinfo
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 gid_map
-r-------- 1 gsm gsm 0 Nov 1 11:28 io
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 limits
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 loginuid
dr-x------ 2 gsm gsm 0 Nov 1 11:28 map_files
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 maps
-rw------- 1 gsm gsm 0 Nov 1 11:28 mem
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 mountinfo
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 mounts
-r-------- 1 gsm gsm 0 Nov 1 11:28 mountstats
dr-xr-xr-x 5 gsm gsm 0 Nov 1 11:28 net
dr-x--x--x 2 gsm gsm 0 Nov 1 11:28 ns
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 numa_maps
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 oom_adj
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 oom_score
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 oom_score_adj
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 pagemap
-r-------- 1 gsm gsm 0 Nov 1 11:28 patch_state
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 personality
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 projid_map
lrwxrwxrwx 1 gsm gsm 0 Nov 1 11:17 root -> /
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 sched
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 schedstat
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 sessionid
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 setgroups
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 smaps
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 stack
-r--r--r-- 1 gsm gsm 0 Nov 1 11:17 stat
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 statm
-r--r--r-- 1 gsm gsm 0 Nov 1 11:17 status
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 syscall
dr-xr-xr-x 3 gsm gsm 0 Nov 1 11:17 task
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 timers
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 uid_map
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 wchan
[gsm@VM-4-3-centos linux]$ cd /
[gsm@VM-4-3-centos /]$ pwd
/
[gsm@VM-4-3-centos /]$ ls /proc/24142 -l
total 0
dr-xr-xr-x 2 gsm gsm 0 Nov 1 11:28 attr
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 autogroup
-r-------- 1 gsm gsm 0 Nov 1 11:28 auxv
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 cgroup
--w------- 1 gsm gsm 0 Nov 1 11:28 clear_refs
-r--r--r-- 1 gsm gsm 0 Nov 1 11:17 cmdline
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 comm
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 coredump_filter
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 cpuset
lrwxrwxrwx 1 gsm gsm 0 Nov 1 11:17 cwd -> /
-r-------- 1 gsm gsm 0 Nov 1 11:17 environ
lrwxrwxrwx 1 gsm gsm 0 Nov 1 11:17 exe -> /usr/bin/bash
dr-x------ 2 gsm gsm 0 Nov 1 11:17 fd
dr-x------ 2 gsm gsm 0 Nov 1 11:28 fdinfo
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 gid_map
-r-------- 1 gsm gsm 0 Nov 1 11:28 io
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 limits
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 loginuid
dr-x------ 2 gsm gsm 0 Nov 1 11:28 map_files
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 maps
-rw------- 1 gsm gsm 0 Nov 1 11:28 mem
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 mountinfo
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 mounts
-r-------- 1 gsm gsm 0 Nov 1 11:28 mountstats
dr-xr-xr-x 5 gsm gsm 0 Nov 1 11:28 net
dr-x--x--x 2 gsm gsm 0 Nov 1 11:28 ns
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 numa_maps
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 oom_adj
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 oom_score
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 oom_score_adj
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 pagemap
-r-------- 1 gsm gsm 0 Nov 1 11:28 patch_state
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 personality
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 projid_map
lrwxrwxrwx 1 gsm gsm 0 Nov 1 11:17 root -> /
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 sched
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 schedstat
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 sessionid
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 setgroups
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 smaps
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 stack
-r--r--r-- 1 gsm gsm 0 Nov 1 11:17 stat
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 statm
-r--r--r-- 1 gsm gsm 0 Nov 1 11:17 status
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 syscall
dr-xr-xr-x 3 gsm gsm 0 Nov 1 11:17 task
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 timers
-rw-r--r-- 1 gsm gsm 0 Nov 1 11:28 uid_map
-r--r--r-- 1 gsm gsm 0 Nov 1 11:28 wchan

[gsm@VM-4-3-centos /]$ echo $SHELL
/bin/bash
[gsm@VM-4-3-centos /]$ echo $PWD
/
[gsm@VM-4-3-centos /]$ cd ~
[gsm@VM-4-3-centos ~]$ echo $PWD
/home/gsm
[gsm@VM-4-3-centos lesson14]$ touch envtest.c
[gsm@VM-4-3-centos lesson14]$ ll
total 0
-rw-rw-r-- 1 gsm gsm 0 Nov 1 13:31 envtest.c
[gsm@VM-4-3-centos lesson14]$ man getenv
[gsm@VM-4-3-centos lesson14]$ vim envtest.c
[gsm@VM-4-3-centos lesson14]$ cat envtest.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("%s\n", getenv("PWD"));
return 0;
}
[gsm@VM-4-3-centos lesson14]$ gcc -o envtest envtest.c
[gsm@VM-4-3-centos lesson14]$ ./envtest
/home/gsm/linux/112/lesson14
[gsm@VM-4-3-centos lesson14]$ pwd
/home/gsm/linux/112/lesson14
区分一个程序/用户是谁,以USER为主:
[gsm@VM-4-3-centos lesson14]$ env
XDG_SESSION_ID=48368
HOSTNAME=VM-4-3-centos
TERM=xterm
SHELL=/bin/bash
HISTSIZE=3000
SSH_CLIENT=114.84.24.124 35348 22
SSH_TTY=/dev/pts/0
USER=gsm
LD_LIBRARY_PATH=:/home/gsm/.VimForCpp/vim/bundle/YCM.so/el7.x86_64
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;31:*.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:*.asf=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:*.midi=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:
MAIL=/var/spool/mail/gsm
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gsm/.local/bin:/home/gsm/bin
PWD=/home/gsm/linux/112/lesson14
LANG=en_US.utf8
SHLVL=1
HOME=/home/gsm
LOGNAME=gsm
SSH_CONNECTION=114.84.24.124 35348 10.0.4.3 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
XDG_RUNTIME_DIR=/run/user/1001
HISTTIMEFORMAT=%F %T
_=/usr/bin/env
OLDPWD=/home/gsm/linux/112
[gsm@VM-4-3-centos lesson14]$ su -
Password:
Last login: Sat Nov 1 11:22:53 CST 2025 on pts/0
Last failed login: Sat Nov 1 17:17:20 CST 2025 from 139.9.210.103 on ssh:notty
There were 431 failed login attempts since the last successful login.
[root@VM-4-3-centos ~]# env
XDG_SESSION_ID=48368
HOSTNAME=VM-4-3-centos
SHELL=/bin/bash
TERM=xterm
HISTSIZE=3000
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;31:*.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:*.asf=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:*.midi=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:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/root
LANG=en_US.utf8
SHLVL=1
HOME=/root
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
HISTTIMEFORMAT=%F %T
_=/bin/env
[root@VM-4-3-centos ~]# logout
[gsm@VM-4-3-centos lesson14]$ su
Password:
[root@VM-4-3-centos lesson14]# env
XDG_SESSION_ID=48368
HOSTNAME=VM-4-3-centos
SHELL=/bin/bash
TERM=xterm
HISTSIZE=3000
SSH_CLIENT=114.84.24.124 35348 22
SSH_TTY=/dev/pts/0
USER=gsm
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;31:*.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:*.asf=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:*.midi=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:
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gsm/.local/bin:/home/gsm/bin
MAIL=/var/spool/mail/gsm
PWD=/home/gsm/linux/112/lesson14
LANG=en_US.utf8
HOME=/root
SHLVL=2
LOGNAME=gsm
SSH_CONNECTION=114.84.24.124 35348 10.0.4.3 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
XDG_RUNTIME_DIR=/run/user/1001
HISTTIMEFORMAT=%F %T
_=/usr/bin/env
[root@VM-4-3-centos lesson14]# exit
exit
[gsm@VM-4-3-centos lesson14]$ ll
total 16
-rwxrwxr-x 1 gsm gsm 8408 Nov 1 13:37 envtest
-rw-rw-r-- 1 gsm gsm 105 Nov 1 13:36 envtest.c
[gsm@VM-4-3-centos lesson14]$ rm envtest
[gsm@VM-4-3-centos lesson14]$ vim envtest.c
[gsm@VM-4-3-centos lesson14]$ cat envtest.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("User:%s\n", getenv("USER"));
//printf("%s\n", getenv("PWD"));
return 0;
}
[gsm@VM-4-3-centos lesson14]$ gcc -o envtest envtest.c
[gsm@VM-4-3-centos lesson14]$ ./envtest
User:gsm
[gsm@VM-4-3-centos lesson14]$ su -
Password:
Last login: Sat Nov 1 17:33:40 CST 2025 on pts/0
[root@VM-4-3-centos ~]# cd /home/gsm/linux/112/lesson14
[root@VM-4-3-centos lesson14]# ll
total 16
-rwxrwxr-x 1 gsm gsm 8416 Nov 1 18:30 envtest
-rw-rw-r-- 1 gsm gsm 148 Nov 1 18:30 envtest.c
[root@VM-4-3-centos lesson14]# ./envtest
User:root
[root@VM-4-3-centos lesson14]# logout
[gsm@VM-4-3-centos lesson14]$ ll
total 16
-rwxrwxr-x 1 gsm gsm 8416 Nov 1 18:30 envtest
-rw-rw-r-- 1 gsm gsm 148 Nov 1 18:30 envtest.c
[gsm@VM-4-3-centos lesson14]$ vim envtest.c
[gsm@VM-4-3-centos lesson14]$ cat envtest.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
// 我可以让我的程序,识别用户身份,只让gsm用户进行访问
const char* who = getenv("USER");
if (strcmp(who, "gsm") == 0)
{
printf("执行程序的正常命令!\n");
return 0;
}
else
{
printf("无权访问!\n");
return 1;
}
//printf("User:%s\n", getenv("USER"));
//printf("%s\n", getenv("PWD"));
return 0;
}
[gsm@VM-4-3-centos lesson14]$ gcc -o envtest envtest.c
[gsm@VM-4-3-centos lesson14]$ ./envtest
执行程序的正常命令!
[gsm@VM-4-3-centos lesson14]$ su -
Password:
Last login: Sat Nov 1 18:36:34 CST 2025 on pts/0
Last failed login: Sat Nov 1 18:39:45 CST 2025 from 139.9.210.103 on ssh:notty
There was 1 failed login attempt since the last successful login.
[root@VM-4-3-centos ~]# cd /home/gsm/linux/112/lesson14
[root@VM-4-3-centos lesson14]# ll
total 16
-rwxrwxr-x 1 gsm gsm 8464 Nov 1 18:45 envtest
-rw-rw-r-- 1 gsm gsm 485 Nov 1 18:44 envtest.c
[root@VM-4-3-centos lesson14]# ./envtest
无权访问!
OLDPWD :
[root@VM-4-3-centos lesson14]# env
XDG_SESSION_ID=48368
HOSTNAME=VM-4-3-centos
SHELL=/bin/bash
TERM=xterm
HISTSIZE=3000
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;31:*.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:*.asf=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:*.midi=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:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/home/gsm/linux/112/lesson14
LANG=en_US.utf8
SHLVL=1
HOME=/root
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
HISTTIMEFORMAT=%F %T
OLDPWD=/root
_=/bin/env
[root@VM-4-3-centos lesson14]# cd /
[root@VM-4-3-centos /]# env
XDG_SESSION_ID=48368
HOSTNAME=VM-4-3-centos
SHELL=/bin/bash
TERM=xterm
HISTSIZE=3000
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;31:*.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:*.asf=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:*.midi=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:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/
LANG=en_US.utf8
SHLVL=1
HOME=/root
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
HISTTIMEFORMAT=%F %T
OLDPWD=/home/gsm/linux/112/lesson14
_=/bin/env
[root@VM-4-3-centos /]# cd -
/home/gsm/linux/112/lesson14
[root@VM-4-3-centos lesson14]# env
XDG_SESSION_ID=48368
HOSTNAME=VM-4-3-centos
SHELL=/bin/bash
TERM=xterm
HISTSIZE=3000
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;31:*.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:*.asf=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:*.midi=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:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/home/gsm/linux/112/lesson14
LANG=en_US.utf8
SHLVL=1
HOME=/root
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
HISTTIMEFORMAT=%F %T
OLDPWD=/
_=/bin/env
[root@VM-4-3-centos lesson14]# cd -
/
[root@VM-4-3-centos /]# cd -
/home/gsm/linux/112/lesson14
[root@VM-4-3-centos lesson14]# cd -
/
[root@VM-4-3-centos /]# cd -
/home/gsm/linux/112/lesson14

set : 显示本地定义的shell变量和环境变量
[root@VM-4-3-centos lesson14]# ll
total 16
-rwxrwxr-x 1 gsm gsm 8464 Nov 1 18:45 envtest
-rw-rw-r-- 1 gsm gsm 485 Nov 1 18:44 envtest.c
[root@VM-4-3-centos lesson14]# i=10
[root@VM-4-3-centos lesson14]# echo $i
10
[root@VM-4-3-centos lesson14]# for (( ; i < 20; i++ )); do echo $i; done
10
11
12
13
14
15
16
17
18
19
[root@VM-4-3-centos lesson14]# a=100
[root@VM-4-3-centos lesson14]# b=200
[root@VM-4-3-centos lesson14]# c=300
[root@VM-4-3-centos lesson14]# echo $i
20
[root@VM-4-3-centos lesson14]# echo $a
100
[root@VM-4-3-centos lesson14]# echo $b
200
[root@VM-4-3-centos lesson14]# echo $c
300
[root@VM-4-3-centos lesson14]# env
XDG_SESSION_ID=48368
HOSTNAME=VM-4-3-centos
SHELL=/bin/bash
TERM=xterm
HISTSIZE=3000
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;31:*.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:*.asf=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:*.midi=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:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/home/gsm/linux/112/lesson14
LANG=en_US.utf8
SHLVL=1
HOME=/root
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
HISTTIMEFORMAT=%F %T
OLDPWD=/
_=/bin/env
[root@VM-4-3-centos lesson14]# set
export : 设置一个新的环境变量
[root@VM-4-3-centos lesson14]# ll
total 16
-rwxrwxr-x 1 gsm gsm 8464 Nov 1 18:45 envtest
-rw-rw-r-- 1 gsm gsm 485 Nov 1 18:44 envtest.c
[root@VM-4-3-centos lesson14]# env
XDG_SESSION_ID=48999
HOSTNAME=VM-4-3-centos
SHELL=/bin/bash
TERM=xterm
HISTSIZE=3000
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;31:*.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:*.asf=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:*.midi=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:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
PWD=/home/gsm/linux/112/lesson14
LANG=en_US.utf8
SHLVL=1
HOME=/root
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
HISTTIMEFORMAT=%F %T
OLDPWD=/root
_=/bin/env
[root@VM-4-3-centos lesson14]# echo $a
100
[root@VM-4-3-centos lesson14]# export a
[root@VM-4-3-centos lesson14]# env
XDG_SESSION_ID=48999
HOSTNAME=VM-4-3-centos
SHELL=/bin/bash
TERM=xterm
HISTSIZE=3000
OLDPWD=/root
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;31:*.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:*.asf=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:*.midi=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:
MAIL=/var/spool/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
a=100
PWD=/home/gsm/linux/112/lesson14
LANG=en_US.utf8
SHLVL=1
HOME=/root
LOGNAME=root
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
HISTTIMEFORMAT=%F %T
_=/bin/env
[gsm@VM-4-3-centos ~]$ export b=1000
[gsm@VM-4-3-centos ~]$ env
XDG_SESSION_ID=49079
HOSTNAME=VM-4-3-centos
TERM=xterm
SHELL=/bin/bash
HISTSIZE=3000
SSH_CLIENT=114.84.24.124 34105 22
SSH_TTY=/dev/pts/0
USER=gsm
LD_LIBRARY_PATH=:/home/gsm/.VimForCpp/vim/bundle/YCM.so/el7.x86_64
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;31:*.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:*.asf=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:*.midi=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:
MAIL=/var/spool/mail/gsm
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gsm/.local/bin:/home/gsm/bin
a=100
PWD=/home/gsm
b=1000
LANG=en_US.utf8
SHLVL=1
HOME=/home/gsm
LOGNAME=gsm
SSH_CONNECTION=114.84.24.124 34105 10.0.4.3 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
XDG_RUNTIME_DIR=/run/user/1001
HISTTIMEFORMAT=%F %T
_=/usr/bin/env
unset : 清除环境变量
[gsm@VM-4-3-centos lesson14]$ ll
total 4
-rw-rw-r-- 1 gsm gsm 485 Nov 1 18:44 envtest.c
[gsm@VM-4-3-centos lesson14]$ vim envtest.c
[gsm@VM-4-3-centos lesson14]$ head -21 envtest.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main()
{
char* isrunning = getenv("ISRUNNING");
if (isrunning == NULL)
{
while (1)
{
printf("当前进程首次启动!\n");
sleep(1);
}
}
else
{
printf("当前进程已经运行了,不要再启动了!\n");
}
[gsm@VM-4-3-centos lesson14]$ gcc -o envtest envtest.c
[gsm@VM-4-3-centos lesson14]$ ./envtest
当前进程首次启动!
当前进程首次启动!
当前进程首次启动!
当前进程首次启动!
^C
[gsm@VM-4-3-centos lesson14]$ ISRUNNING=1
[gsm@VM-4-3-centos lesson14]$ echo $ISRUNNING
1
[gsm@VM-4-3-centos lesson14]$ ./envtest
当前进程首次启动!
当前进程首次启动!
当前进程首次启动!
当前进程首次启动!
当前进程首次启动!
^C
[gsm@VM-4-3-centos lesson14]$ export ISRUNNING
[gsm@VM-4-3-centos lesson14]$ ./envtest
当前进程已经运行了,不要再启动了!
[gsm@VM-4-3-centos lesson14]$ env
XDG_SESSION_ID=49079
HOSTNAME=VM-4-3-centos
TERM=xterm
SHELL=/bin/bash
HISTSIZE=3000
SSH_CLIENT=114.84.24.124 34105 22
OLDPWD=/home/gsm/linux/112
SSH_TTY=/dev/pts/0
USER=gsm
LD_LIBRARY_PATH=:/home/gsm/.VimForCpp/vim/bundle/YCM.so/el7.x86_64
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;31:*.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:*.asf=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:*.midi=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:
MAIL=/var/spool/mail/gsm
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gsm/.local/bin:/home/gsm/bin
a=100
PWD=/home/gsm/linux/112/lesson14
b=1000
LANG=en_US.utf8
ISRUNNING=1
SHLVL=1
HOME=/home/gsm
LOGNAME=gsm
SSH_CONNECTION=114.84.24.124 34105 10.0.4.3 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
XDG_RUNTIME_DIR=/run/user/1001
HISTTIMEFORMAT=%F %T
_=/usr/bin/env
[gsm@VM-4-3-centos lesson14]$ vim envtest.c
[gsm@VM-4-3-centos lesson14]$ head -22 envtest.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main()
{
char* isrunning = getenv("ISRUNNING");
printf("ISRUNNING=%s\n", isrunning);
if (isrunning == NULL)
{
while (1)
{
printf("当前进程首次启动!\n");
sleep(1);
}
}
else
{
printf("当前进程已经运行了,不要再启动了!\n");
}
[gsm@VM-4-3-centos lesson14]$ gcc -o envtest envtest.c
[gsm@VM-4-3-centos lesson14]$ ./envtest
ISRUNNING=1
当前进程已经运行了,不要再启动了!
[gsm@VM-4-3-centos lesson14]$ unset ISRUNNING
[gsm@VM-4-3-centos lesson14]$ ./envtest
ISRUNNING=(null)
当前进程首次启动!
当前进程首次启动!
当前进程首次启动!
^C
[gsm@VM-4-3-centos lesson14]$ man environ
[gsm@VM-4-3-centos lesson14]$ vim envtest.c
[gsm@VM-4-3-centos lesson14]$ head -13 envtest.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
extern char** environ;
int main()
{
for (int i = 0; environ[i]; i++)
{
printf("%s\n", environ[i]);
}
[gsm@VM-4-3-centos lesson14]$ gcc -o envtest envtest.c -std=c99
[gsm@VM-4-3-centos lesson14]$ ./envtest
XDG_SESSION_ID=49079
HOSTNAME=VM-4-3-centos
TERM=xterm
SHELL=/bin/bash
HISTSIZE=3000
SSH_CLIENT=114.84.24.124 34105 22
OLDPWD=/home/gsm/linux/112
SSH_TTY=/dev/pts/0
USER=gsm
LD_LIBRARY_PATH=:/home/gsm/.VimForCpp/vim/bundle/YCM.so/el7.x86_64
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;31:*.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:*.asf=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:*.midi=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:
MAIL=/var/spool/mail/gsm
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gsm/.local/bin:/home/gsm/bin
a=100
PWD=/home/gsm/linux/112/lesson14
b=1000
LANG=en_US.utf8
SHLVL=1
HOME=/home/gsm
LOGNAME=gsm
SSH_CONNECTION=114.84.24.124 34105 10.0.4.3 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"
XDG_RUNTIME_DIR=/run/user/1001
HISTTIMEFORMAT=%F %T
_=./envtest
5. 程序地址空间

[gsm@VM-4-3-centos lesson14]$ ll
total 4
-rw-rw-r-- 1 gsm gsm 999 Nov 1 22:38 envtest.c
[gsm@VM-4-3-centos lesson14]$ mv envtest.c process.c
[gsm@VM-4-3-centos lesson14]$ ll
total 4
-rw-rw-r-- 1 gsm gsm 999 Nov 1 22:38 process.c
[gsm@VM-4-3-centos lesson14]$ ls > Makefile
[gsm@VM-4-3-centos lesson14]$ vim Makefile
[gsm@VM-4-3-centos lesson14]$ cat Makefile
process:process.c
gcc -o $@ $^
.PHONY:clean
clean:
rm -f process
[gsm@VM-4-3-centos lesson14]$ vim process.c
[gsm@VM-4-3-centos lesson14]$ head -34 process.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int gval = 100;
int main()
{
printf("我是一个进程,pid: %d, ppid: %d\n", getpid(), getppid());
pid_t id = fork();
if (id == 0)
{
// child
while (1)
{
printf("我是子进程,pid: %d, ppid: %d, gval: %d, &gval: %p\n", getpid(), getppid(), gval, &gval);
gval++;
sleep(1);
}
}
else
{
// parent
while (1)
{
printf("我是父进程,pid: %d, ppid: %d, gval: %d, &gval: %p\n", getpid(), getppid(), gval, &gval);
sleep(1);
}
}
}
[gsm@VM-4-3-centos lesson14]$ make
gcc -o process process.c
[gsm@VM-4-3-centos lesson14]$ ./process
我是一个进程,pid: 32696, ppid: 26618
我是父进程,pid: 32696, ppid: 26618, gval: 100, &gval: 0x601054
我是子进程,pid: 32697, ppid: 32696, gval: 100, &gval: 0x601054
我是父进程,pid: 32696, ppid: 26618, gval: 100, &gval: 0x601054
我是子进程,pid: 32697, ppid: 32696, gval: 101, &gval: 0x601054
我是父进程,pid: 32696, ppid: 26618, gval: 100, &gval: 0x601054
我是子进程,pid: 32697, ppid: 32696, gval: 102, &gval: 0x601054
我是子进程,pid: 32697, ppid: 32696, gval: 103, &gval: 0x601054
我是父进程,pid: 32696, ppid: 26618, gval: 100, &gval: 0x601054
我是父进程,pid: 32696, ppid: 26618, gval: 100, &gval: 0x601054
我是子进程,pid: 32697, ppid: 32696, gval: 104, &gval: 0x601054
我是子进程,pid: 32697, ppid: 32696, gval: 105, &gval: 0x601054
我是父进程,pid: 32696, ppid: 26618, gval: 100, &gval: 0x601054
我是父进程,pid: 32696, ppid: 26618, gval: 100, &gval: 0x601054
我是子进程,pid: 32697, ppid: 32696, gval: 106, &gval: 0x601054
^C
[gsm@VM-4-3-centos lesson14]$ vim process.c
[gsm@VM-4-3-centos lesson14]$ head -21 process.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int unval;
int gval = 100;
int main()
{
printf("code addr: %p\n", main);
printf("gval addr: %p\n", &gval);
printf("unval addr: %p\n", &unval);
int* mem = (int*)malloc(10 * sizeof(int));
printf("heap addr: %p\n", mem);
int a,b,c;
printf("stack addr: %p\n", &a);
printf("stack addr: %p\n", &b);
printf("stack addr: %p\n", &c);
[gsm@VM-4-3-centos lesson14]$ make
gcc -o process process.c
[gsm@VM-4-3-centos lesson14]$ ./process
code addr: 0x40057d
gval addr: 0x60103c
unval addr: 0x601044
heap addr: 0x890010
stack addr: 0x7ffc8e34df54
stack addr: 0x7ffc8e34df50
stack addr: 0x7ffc8e34df4c


[gsm@VM-4-3-centos lesson14]$ ll
total 20
-rw-rw-r-- 1 gsm gsm 67 Nov 3 13:48 Makefile
-rwxrwxr-x 1 gsm gsm 8472 Nov 6 18:15 process
-rw-rw-r-- 1 gsm gsm 2085 Nov 3 22:54 process.c
[gsm@VM-4-3-centos lesson14]$ readelf -S process
There are 30 section headers, starting at offset 0x1998:
Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
[ 0] NULL 0000000000000000 00000000
0000000000000000 0000000000000000 0 0 0
[ 1] .interp PROGBITS 0000000000400238 00000238
000000000000001c 0000000000000000 A 0 0 1
[ 2] .note.ABI-tag NOTE 0000000000400254 00000254
0000000000000020 0000000000000000 A 0 0 4
[ 3] .note.gnu.build-i NOTE 0000000000400274 00000274
0000000000000024 0000000000000000 A 0 0 4
[ 4] .gnu.hash GNU_HASH 0000000000400298 00000298
000000000000001c 0000000000000000 A 5 0 8
[ 5] .dynsym DYNSYM 00000000004002b8 000002b8
0000000000000078 0000000000000018 A 6 1 8
[ 6] .dynstr STRTAB 0000000000400330 00000330
0000000000000046 0000000000000000 A 0 0 1
[ 7] .gnu.version VERSYM 0000000000400376 00000376
000000000000000a 0000000000000002 A 5 0 2
[ 8] .gnu.version_r VERNEED 0000000000400380 00000380
0000000000000020 0000000000000000 A 6 1 8
[ 9] .rela.dyn RELA 00000000004003a0 000003a0
0000000000000018 0000000000000018 A 5 0 8
[10] .rela.plt RELA 00000000004003b8 000003b8
0000000000000060 0000000000000018 AI 5 23 8
[11] .init PROGBITS 0000000000400418 00000418
000000000000001a 0000000000000000 AX 0 0 4
[12] .plt PROGBITS 0000000000400440 00000440
0000000000000050 0000000000000010 AX 0 0 16
[13] .text PROGBITS 0000000000400490 00000490
0000000000000212 0000000000000000 AX 0 0 16
[14] .fini PROGBITS 00000000004006a4 000006a4
0000000000000009 0000000000000000 AX 0 0 4
[15] .rodata PROGBITS 00000000004006b0 000006b0
000000000000005d 0000000000000000 A 0 0 8
[16] .eh_frame_hdr PROGBITS 0000000000400710 00000710
0000000000000034 0000000000000000 A 0 0 4
[17] .eh_frame PROGBITS 0000000000400748 00000748
00000000000000f4 0000000000000000 A 0 0 8
[18] .init_array INIT_ARRAY 0000000000600e10 00000e10
0000000000000008 0000000000000008 WA 0 0 8
[19] .fini_array FINI_ARRAY 0000000000600e18 00000e18
0000000000000008 0000000000000008 WA 0 0 8
[20] .jcr PROGBITS 0000000000600e20 00000e20
0000000000000008 0000000000000000 WA 0 0 8
[21] .dynamic DYNAMIC 0000000000600e28 00000e28
00000000000001d0 0000000000000010 WA 6 0 8
[22] .got PROGBITS 0000000000600ff8 00000ff8
0000000000000008 0000000000000008 WA 0 0 8
[23] .got.plt PROGBITS 0000000000601000 00001000
0000000000000038 0000000000000008 WA 0 0 8
[24] .data PROGBITS 0000000000601038 00001038
0000000000000008 0000000000000000 WA 0 0 4
[25] .bss NOBITS 0000000000601040 00001040
0000000000000008 0000000000000000 WA 0 0 4
[26] .comment PROGBITS 0000000000000000 00001040
000000000000002d 0000000000000001 MS 0 0 1
[27] .symtab SYMTAB 0000000000000000 00001070
0000000000000630 0000000000000018 28 46 8
[28] .strtab STRTAB 0000000000000000 000016a0
00000000000001ed 0000000000000000 0 0 1
[29] .shstrtab STRTAB 0000000000000000 0000188d
0000000000000108 0000000000000000 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
L (link order), O (extra OS processing required), G (group), T (TLS),
C (compressed), x (unknown), o (OS specific), E (exclude),
l (large), p (processor specific)

更多推荐



所有评论(0)