UNIX 的答案: execve
int execve(const char *filename,
char * const argv[], char * const envp[]);
execve 行为
filename 的程序argv (v) 和环境变量 envp (e)main() 的参数!“应用程序执行的环境”
env 命令查看PATH: 可执行文件搜索路径PWD: 当前路径HOME: home 目录DISPLAY: 图形输出PS1: shell 的提示符export: 告诉 shell 在创建子进程时设置环境变量export ARCH=x86_64-qemu 或 export ARCH=nativeAM_HOME 终于破案了PATH可执行文件搜索路径
[pid 28369] execve("/usr/local/sbin/as", ["as", "--64", ...
[pid 28369] execve("/usr/local/bin/as", ["as", "--64", ...
[pid 28369] execve("/usr/sbin/as", ["as", "--64", ...
[pid 28369] execve("/usr/bin/as", ["as", "--64", ...
PATH 里指定的顺序$ PATH="" /usr/bin/gcc a.c
gcc: error trying to exec 'as': execvp: No such file or directory
$ PATH="/usr/bin/" gcc a.c
计算机系统里没有魔法。机器永远是对的。