У меня на жестком диске есть каталог, содержащий коллекцию исполняемых файлов Unix, которые я пытаюсь запустить с терминала. Когда я просматриваю каталог из терминала, он показывает, что все файлы есть, но когда я ввожу имя одного из исполняемых файлов Unix, он говорит «-bash orca: команда не найдена» (исполняемый файл называется «orca»). Если я перехожу к папке в поисковике и нажимаю на тот же файл, появляется окно терминала и запускается файл. Однако, поскольку программа требует, чтобы я указал входной файл, я получаю следующее возвращаемое:

/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.

3 ответа3

7

Вы захотите использовать ./orca вместо просто orca . В OS X текущий каталог (.) Не находится в $PATH по умолчанию, поэтому вы не можете запускать программы в текущем каталоге без явного присвоения ему имени.

1

Просто чтобы расширить ответ @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 в вашем домашнем каталоге.

1

Одним из вариантов является добавление

/Users/damonrobles/Documents/orca_macosx_r2360

к вашей переменной среды PATH, если вы собираетесь оставить код установленным в вашем каталоге Documents.

Другой вариант, который вы можете рассмотреть, это добавить ' . к вашему пути.

Хотя это может быть опасно (добавлять « . » К PATH), я работаю в достаточно чистой окружающей среде, которая у меня есть » .передней части моего пути. Это более опасно, чем иметь его позади PATH, и оба они более опасны, чем не иметь » . 'на вашем пути.

Преимущество наличия » . Во- первых, при разработке программы мне не нужно указывать ./program для запуска локальной копии вместо установленной. Недостаток наличия » . Во-первых, если кто-то попадает на мою машину и создает в одном из моих каталогов троянский конь с именем « ls » (скажем), и я запускаю « ls » в этом каталоге, я запускаю их троянского коня вместо реальной версии. Если у них есть хоть какой-то смысл, троян уберется за собой и выполнит заданную команду, то есть я могу этого не заметить. Вам решать, считаете ли вы это серьезным риском или нет. Добавление . 'в конце PATH означает, что вы будете запускать программы в текущем каталоге, которые не имеют аналогов нигде в вашем PATH; однако, если у вас есть установленная версия программы, скажем, в /usr/local/bin (и это в вашей переменной PATH), то установленная версия будет работать в предпочтении по сравнению с локальной версией. Это может иметь или не иметь значения для вас; это делает для меня, поэтому я поставил ' . 'на фронте, но это обдуманный и понятый риск.

YMMV; будь осторожен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .