Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 如何找到当前进程/可执行文件运行的路径?_Unix_Path - Fatal编程技术网

Unix 如何找到当前进程/可执行文件运行的路径?

Unix 如何找到当前进程/可执行文件运行的路径?,unix,path,Unix,Path,连接到本地unix服务器盒时,我正在运行一些可执行文件 比如说,我正在尝试运行一个可执行的“abc”。现在服务器可能已经为“abc”提供了别名。。我如何知道这条路?如中所示,如果我调用“abc”,它实际上可能从/opt/corp/xyz/abc运行它。。如何知道调用可执行文件的路径 顺便说一句,我正在HP-UX上运行:D“哪个abc”以显示您将调用哪个abc 或“alias”列出别名 可能是从脚本内部“echo$0”,或者以其他方式检索argv[0.HP-UX是否有“which”命令?运行: w

连接到本地unix服务器盒时,我正在运行一些可执行文件

比如说,我正在尝试运行一个可执行的“abc”。现在服务器可能已经为“abc”提供了别名。。我如何知道这条路?如中所示,如果我调用“abc”,它实际上可能从/opt/corp/xyz/abc运行它。。如何知道调用可执行文件的路径

顺便说一句,我正在HP-UX上运行:D

哪个abc
”以显示您将调用哪个
abc

或“
alias
”列出别名

可能是从脚本内部“echo$0”,或者以其他方式检索argv[0.

HP-UX是否有“which”命令?运行:

which abc

如果有,则
which
命令将告诉您哪个abc程序将从
$PATH

运行如果使用PATH环境变量,您可以尝试:

$ which abc 如果命令基于别名,则以下内容将显示别名定义

$ alias abc
在Python中,请参见命令行终端中的SO

哪种abc

/opt/corp/xyz/abc

谢谢大家! “哪个”是我要找的命令!我现在正在面对我自己,因为我已经知道了这个命令(在Ubuntu中)。。 在HP-UX中,它确实像一个魅力

编辑:popcnt建议的“whereis”更合适!
太多了,伙计

在Unix上获取脚本路径的正确方法是:

dir=$(cd $(dirname "$0"); pwd)
背景:$0是脚本相对于当前目录的文件名+路径。它可以是绝对的(
/…
)或相对的(
。/
dir/…
)。因此,
$(dirname“$0”)
返回路径(不带文件名)。注意引用;“$0”可以包含空格和其他奇怪的东西

然后我们将
cd
放入该目录,然后
pwd
将返回我们结束的绝对路径

适用于
ksh
bash

在C程序中,应选中
argv[0]
。我不确定shell是否会将完整路径放入其中。如果您遇到问题,我建议将您的可执行文件包装在一个小脚本中,该脚本用于准备环境,然后使用以下命令调用您的可执行文件:

exec "$dir/"exe "$@"

如果你喜欢我的,就继续+1,如果满意,你可以把它作为你问题的答案。这通常是你在这里看到的,而不是原始海报上的“答案”。 $ alias abc
$running_script = $0;
dir=$(cd $(dirname "$0"); pwd)
exec "$dir/"exe "$@"