我的硬盘上有一个目录,其中包含我试图从终端运行的一组 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;要小心。