如何找到执行unix命令的位置?
是否有任何方法或命令可以找到执行标准命令的路径?例如如何找到执行unix命令的位置?,unix,command,exec,Unix,Command,Exec,是否有任何方法或命令可以找到执行标准命令的路径?例如ls,mkdir,mysql,hadoop,等等 我知道它们的来源可以从$PATH变量中找到,可能应该在/bin目录中。但是如何才能从命令运行的位置正确获取目录?该命令返回可执行文件的完整路径,例如: mureinik@comupter ~ $ which mkdir /usr/bin/mkdir 如果您确实需要目录,您可以始终对其应用dirname: mureinik@conmputer ~ $ dirname `which mkdir`
ls
,mkdir
,mysql
,hadoop
,等等
我知道它们的来源可以从
$PATH
变量中找到,可能应该在/bin
目录中。但是如何才能从命令运行的位置正确获取目录?该命令返回可执行文件的完整路径,例如:
mureinik@comupter ~ $ which mkdir
/usr/bin/mkdir
如果您确实需要目录,您可以始终对其应用dirname
:
mureinik@conmputer ~ $ dirname `which mkdir`
/usr/bin
在阅读OP的问题时,我注意到有针对性地排除了依赖于路径的方法,而忽略了哪个的明显答案(因为这正是它所做的)。顺便说一句,
的程序最初是一个C-shell脚本,尽管还有其他实现(,和),例如,它的一个版本有一点变化,它的手动页面状态是
别名和路径都取自用户的.cshrc文件
如果您不使用C-shell,那么
的原始版本用处有限。由于没有标准版本,结果(以及工具的功能)可能因系统而异。一些shell(例如ksh
)具有类似的功能,但命名方式不同,例如ksh
(bash提供ksh别名类型
,但不提供“whence关键字”)
我不经常使用,因为我有更好的工具(和)。但是在忽略了显而易见的问题之后,这个用词表达的问题很容易提出一个更有趣的问题:应用程序如何确定运行另一个应用程序的目录。不是明显的“可执行文件在哪里?”,而是“程序运行时的工作目录是什么?”。最近在处理相对路径名时也遇到了类似的问题
在一些支持/proc
伪文件系统的系统上,有一个cwd
节点,它提供给定进程的当前工作目录。关于这一点,这个问题有一些细节
xterm的可选功能“spawn new terminal”(2007年添加)使用此信息使新的终端实例在与用户当前shell工作目录相同的工作目录中运行
脚本可以使用它,方法是从相关命令的进程id开始,并检查相应的cwd
节点的/proc
树。感谢Mureinik的快速回答。…)对不起,我试着投赞成票,但它给了我一个-1,我无法回滚,它说我需要15个声誉。我发现您的答案很有用,因此请求stackoverflow团队删除-1并将其更改为+1@anna如果这解决了您的问题,您可以通过投票按钮将答案标记为已接受(下面的复选标记)。@anna如果这个答案真的对您有帮助,您应该没有足够的声誉来删除否决票并添加否决票。