Есть ли способ выполнить скомпилированный код C внутри скрипта bash? - PullRequest
1 голос
/ 12 апреля 2019

По сути, я хочу вызывать скомпилированный C-код внутри bash-скрипта. Я хочу иметь возможность вызывать ./a.out из любого каталога и заставить его выполняться.

Все это происходит от чего-то довольно простого. Я сделал программу проклятий, которая является заставкой для терминала. Я хочу иметь возможность вызывать команду bash screensaver, и я хочу, чтобы он вызывал код c через bash. Я хочу иметь возможность вызывать его из любой точки файловой системы. Я работаю на Macbook 2013 года, но думаю, что это скорее не знакомство с проблемой C, а не с аппаратным обеспечением, при необходимости я могу предоставить более подробную информацию.

Файл здесь:

/Users/User/screensaver/screensaver.c

cd /Users/User/screensaver

gcc screensaver.c создает a.out

Я могу запустить

./a.out И код работает.

Я пытался звонить ./Users/User/screensaver/a.out между прочим.

Это не работает, и просто говорит, что файл не существует. Я пытался использовать exec и source, но ничего не получалось. Конечно, должен быть способ вызвать это откуда-то еще, верно? Я знаю, что теоретически могу сохранить свой текущий каталог как переменную окружения, cd, в каталог, ./a.out, а затем при выходе cd обратно в сохраненный каталог, но это похоже на большую борьбу за ее ценность.

Редактировать: я увидел, что теоретически могу поместить его в мой bin и скомпилировал с -o. Я не пробовал, но я не хочу этого делать, потому что этот код все еще находится в разработке, поэтому я не хочу компилировать и перемещать его каждый раз.

1 Ответ

0 голосов
/ 12 апреля 2019

Это сработало:

"Попробуйте вызвать /Users/User/screensaver/a.out, не ставя точку в начале пути. Существует особая причина безопасности, по которой вам нужно указывать ./a.out, а не a.out, когда вы находитесь в каталоге, где находится исполняемый файл. " -tshiono

...