我怎样才能在一个系统上找到一个 Unix 程序的所有版本?
How can I find all the versions of a Unix program on a system?
这在课程作业中出现,我被卡住了:
Many systems have more than one version of a utility program so that users can choose the one they want. Suggest a command to find all the versions of make
on a system. What determines which one a user actually gets? How might a user override the defaults?
你会怎么做?
UNIX 如何查找程序
由于历史原因,类 Unix 系统将其可执行程序存储在各种目录中。
当您想要 运行 命令时搜索的目录存储在名为 $PATH
的 environment variable 中,以冒号 (:
) 分隔。要查看其内容,请在终端 window 中键入 echo "$PATH"
。在我的系统上,显示(拆分以避免长行)
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:
/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
他们是按这个顺序搜索的。如果我要运行make
,系统会先检查/usr/local/sbin/make
(不存在),然后/usr/local/bin/make
(也不存在),然后/usr/bin/make
(确实存在,所以运行就是这样)。
如何判断哪一个会 运行
程序 which
可用于查看 $PATH
以确定将选择哪个程序。 运行 which make
在我的系统上产生输出 /usr/bin/make
.
方便的是,which
有一个 -a
标志来打印 所有 匹配的可执行文件,而不仅仅是第一个。 (我通过 运行ning man which
查阅它的手册发现了这一点。)所以 which -a java
应该告诉你 java
的所有版本在哪里。
更改默认值
如果你愿意,你可以改变$PATH
变量的内容,就像你可以改变任何环境变量一样:如果我运行 PATH="$PATH:/home/anko/bin"
,下次系统需要要找到一个程序,它会检查所有 $PATH
以前的内容,如果找不到其他任何东西,还会检查我的主目录中名为 bin
的目录。
我还可以通过 PATH="/home/anko/bin:$PATH"
.
在目录前面添加目录,使其优先于其他任何内容
这在课程作业中出现,我被卡住了:
Many systems have more than one version of a utility program so that users can choose the one they want. Suggest a command to find all the versions of
make
on a system. What determines which one a user actually gets? How might a user override the defaults?
你会怎么做?
UNIX 如何查找程序
由于历史原因,类 Unix 系统将其可执行程序存储在各种目录中。
当您想要 运行 命令时搜索的目录存储在名为 $PATH
的 environment variable 中,以冒号 (:
) 分隔。要查看其内容,请在终端 window 中键入 echo "$PATH"
。在我的系统上,显示(拆分以避免长行)
/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:
/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
他们是按这个顺序搜索的。如果我要运行make
,系统会先检查/usr/local/sbin/make
(不存在),然后/usr/local/bin/make
(也不存在),然后/usr/bin/make
(确实存在,所以运行就是这样)。
如何判断哪一个会 运行
程序 which
可用于查看 $PATH
以确定将选择哪个程序。 运行 which make
在我的系统上产生输出 /usr/bin/make
.
方便的是,which
有一个 -a
标志来打印 所有 匹配的可执行文件,而不仅仅是第一个。 (我通过 运行ning man which
查阅它的手册发现了这一点。)所以 which -a java
应该告诉你 java
的所有版本在哪里。
更改默认值
如果你愿意,你可以改变$PATH
变量的内容,就像你可以改变任何环境变量一样:如果我运行 PATH="$PATH:/home/anko/bin"
,下次系统需要要找到一个程序,它会检查所有 $PATH
以前的内容,如果找不到其他任何东西,还会检查我的主目录中名为 bin
的目录。
我还可以通过 PATH="/home/anko/bin:$PATH"
.