从终端执行 unix 代码

从终端执行 unix 代码

我的硬盘上有一个目录,其中包含我试图从终端运行的一组 Unix 可执行文件。当我从终端浏览目录时,它显示所有文件都在那里,但当我输入其中一个 Unix 可执行文件的名称时,它显示“-bash orca:未找到命令”(可执行文件名为“orca”)。如果我在 Finder 中浏览到该文件夹​​并单击同一个文件,则会出现一个终端窗口并运行该文件。但是,由于程序要求我指定一个输入文件,因此我得到以下返回结果:

/Users/damonrobles/Documents/orca_macosx_r2360/orca ; exit;
Damon-Robless-MacBook-Pro:~ damonrobles$ /Users/damonrobles/Documents/orca_macosx_r2360/orca ; exit;
This program requires the name of a parameterfile as argument
For example ORCA TEST.INP 
logout

[Process completed]

根据程序手册,我应该从终端调用该程序,如下所示:

nohup orca Inputfile.inp >& outputfile.out

但是当我这样做时,它只会生成一个输出文件,内容是:

nohup: orca: No such file or directory 

并返回到终端提示符。我搞不清楚问题到底是什么,虽然我是一个新手终端用户,所以我肯定这是我的愚蠢行为。任何帮助都非常感谢!我在 MacBook Pro 上运行 OSX 10.6.8。

答案1

您需要使用./orca而不是orca。在 OS X 中,当前目录 ( .) 默认不在$PATH,因此您无法在未明确命名当前目录的情况下执行程序。

答案2

只是为了扩展@jtbandes 的回答:您可以 (1) 导航到包含(如您所说)的目录orca并按照他说的做,您可以 (2) 使用可执行文件的完整路径,如 /Users/Damon/foo/bar/orca(或输入文件),或者您可以将可执行文件“链接”到 $PATH 上的目录。例如,如果orca在桌面上,您可以执行以下操作:

mkdir bin
PATH=$PATH:~/bin;  export PATH
echo $PATH
ln -s ~/Desktop/orca ~/bin
ls -al ~/bin
orca infile > outfile

为了使其永久生效,您需要更改.bash_profile您的主目录。

答案3

一种选择是添加

/Users/damonrobles/Documents/orca_macosx_r2360

如果您要将代码安装在您的 Documents 目录下,请将其添加到您的 PATH 环境变量中。

您可以考虑的另一个选择是将“ .”添加到您的 PATH 中。

尽管这可能很危险(将“ .”添加到 PATH),但我在足够干净的环境中工作,因此我将“ .”放在正面路径。这比在路径上更危险后退的 PATH,这两者都比.PATH 上没有“ ”更危险。

将 ' ' 放在最前面的优点.是,在开发程序时,我不必指定./program运行本地副本而不是已安装的副本。将 ' .' 放在最前面的缺点是,如果有人进入我的计算机并ls在我的某个目录中创建一个名为 ' ' 的特洛伊木马,然后我ls在该目录中运行 ' ',那么我运行的是他们的特洛伊木马而不是真正的版本。如果他们有点理智,特洛伊木马会自行清理并运行预期的命令,这意味着我可能不会注意到。是否认为这是一个严重的风险取决于您。.在 PATH 末尾添加 ' ' 意味着您将在当前目录中运行 PATH 中其他任何地方都没有的程序;但是,如果您在 PATH 中安装了该程序的版本/usr/local/bin(并且该版本在您的 PATH 上),那么将优先运行安装的版本而不是本地版本。这对您可能有影响,也可能没有影响;对我来说很重要,所以我将 ' .' 放在最前面,但这是一个经过深思熟虑和理解的风险。

YMMV;要小心。

相关内容