Answers:
请先执行此操作(除非您确定自己拥有该文件)。
检查并确保您拥有尝试通过以下方法之一执行的文件。
在终端中执行此命令
[ ! -O "/path/to/file" ] && echo "You don't own the file"
You don't own the file
”,请参见下面的“更改文件所有权”。在终端中执行此命令
sudo chown $USER:$(id -gn $USER) "/path/to/file"
答案我从发现评论通过Lekensteyn上回答了一个问题,关于chmod
上,我认为值得它自己的问题和答案,充分肯定Lekensteyn NTFS分区。
将此命令用于可执行文件(替换/path/to/executable
为正确的路径):
64位可执行文件:
/lib64/ld-linux-x86-64.so.2 /path/to/executable
32位可执行文件:
/lib/ld-linux.so.2 /path/to/executable
如果以上方法无效(或引发未找到文件的错误),请在上述命令之前尝试使用此方法
cd "$(dirname /path/to/executable)"
以上所有命令不适用于基于文本的脚本(Bash,Python,Perl等),请参见下文。
使用此命令找出可执行文件是32(x86
)还是64(x86-64
)位
objdump -f "$file" | grep '^architecture' | cut -d, -f1 | sed 's/architecture: //'
如果显示,则为i386:x86-64
64位。如果i386
仅显示,则为32位。
对于基于文本的脚本(Bash,Python,Perl等),应使用#!
文件第一行中指定的命令。
例如,如果文件的第一行是
#!/usr/bin/env python3
然后在终端中运行这些命令(替换/path/to/file
为正确的路径)
cd "$(dirname /path/to/file)" # Not strictly necessary, see section below
# Replace '/usr/bin/env python3' with the first line without the front #!
/usr/bin/env python3 /path/to/file # Use './file' if you want
.jar
文件对于Java可执行jar,您可以简单地使用以下命令(/path/to/jar
用正确的路径代替):
cd "$(dirname /path/to/jar)" # Not strictly necessary, see section below
java -jar /path/to/jar
cd "$(dirname /path/to/file)"
在以下情况下,可能不需要使用cd "$(dirname /path/to/file)"
任何方法就可以运行该程序:如果至少有一个为true,则不需要cd
首先使用。
apt-get
)cd
(或同等学历)更改为绝对路径做任何文件操作之前(例如:cd "$(dirname "$0")"
)./
以斜杠开头或以无斜杠开头的路径)如果不确定,请cd "$(dirname "$0")"
在脚本顶部(如果适用)添加(或等效)或使用cd "$(dirname /path/to/file)"
。
如果它是一个shell脚本,则可以从另一个shell脚本“获取”它,即:
#!/bin/bash
# This script runs another script indirectly, by sucking in its contents and evaluating inline:
source /path/to/script/which/lost/its/exec/flag "$@"
如果需要,“ $ @”会附加命令行参数。
话虽如此,这可能不是解决潜在问题的最佳解决方案,但是我们对该问题了解不足,无法提供替代方案。
bash script $@