linux的宗旨是万物皆文件,所以很多不在源中的程序就是解包即用,但这样使用起来有些不方便,需要cd到可执行文件目录,然后再运行,显得有些麻烦。

就以最近下载的一个软件为例

它的执行命令为

1
java -jar proxyee-down-main.jar

保存到proxyee-down后,发现无法运行,就给权限

1
chmod +x proxyee-down

但是发现这样的话,还是只能在这个jar包的位置才能正常执行这个文件

想到shell下可以使用pwd查看当前目录

于是首先先加上标记,告诉系统使用bash

1
2
#!/bin/bash
java -jar $(pwd)/proxyee-down-main.jar

但是发现pwd给的是当前目录,而不是脚本的目录,于是改用dirname

1
2
work_path=$(dirname $(readlink -f $0))
java -jar ${work_path}/proxyee-down-main.jar

在命令行测试成功


参考资料