2016-10-17 4 views
0

Предположим, у меня есть файл A.cpp.Выполнить C++ двоичный код без ведущего `. /`

Я использовал ARGC и ARGV в основном, чтобы сделать это приложение терминала, это означает, что я хочу, чтобы программа работала так:

terminal> program [options] [input] 

Учитывая компилировать его, как это:

g++ -std=c++11 -o program A.cpp 

Когда я писал

программы [опции] [вход]

в окнах, он работал просто отлично, но в убунту я должен написать

terminal> ./program [options] [input] 

есть способ, чтобы выполнить его без этого «./»?

grep работает в ubuntu так же, как и без "./", и я хотел, чтобы A.cpp запускался точно так же, как grep.

+2

Да, есть способ удалить '. /'. Нет, я не скажу вам, как это сделать, так как это может привести к очень странному поведению и даже к дырам в безопасности. Это также не имеет никакого отношения к вашей программе или программированию в целом, и на самом деле этого не должно быть. –

+1

Это не имеет никакого отношения к самому программированию, и все с помощью того, как «PATH» работает в Windows и мире * nix. В * nix исполняемые файлы не просматриваются в '.', если только' .' явно не указан в 'PATH'. И это не очень хорошая идея добавить его там, из соображений безопасности. – Angew

+0

Добавьте каталог, в котором 'program' соответствует переменной среды $ PATH. –

ответ

1

Я думаю, вам нужно добавить свой каталог исполняемого файла в переменную PATH вашей оболочки (это может измениться между некоторыми оболочками).

export PATH=$PATH:/path/to/dir 

Если вы хотите, чтобы сделать его постоянным вам может понадобиться, чтобы добавить это

~/.profile (or ~/.bashrc depends on your shell) 

Однако, лично я предпочитаю создавать скрипт для подготовки среды разработки и запустить его, когда мне нужно вместо жесткого кодирования этих значений где-то в файловой системе. Таким образом, вы можете инициализировать некоторые другие переменные, которые могут быть использованы для дальнейших планов развития.

+0

Я добавил «export PATH = $ PATH: ../bin» в make-файл, и все равно он не работал без ./ (когда make компилирует, он отправляет исполняемый файл в папку ../bin) – Daniel

+1

Это очень плохая идея - добавление относительных путей на ваш путь. – UKMonkey

+0

@ Даниэль после того, как вы измените путь (если вы это исправите), используйте команду источника (источник-человек), чтобы обновить среду или выйти из системы и войти в систему. – Deniz

0

Вы можете разместить исполняемую программу в/USR/бен

К примеру, если ваша программа называется MyProg вы можете переместить его в/USR/BIN/MyProg, , то вы можете запустить его из любого места с помощью набрав

$ myprog 

Чтобы дать ему права на исполнение, если это необходимо:

$ sudo chmod +x myprog 
+1

пользовательских программ, обычно помещенных в '/ usr/local/bin', не рекомендуется использовать'/usr/bin' для этого – Slava

2

в зависимости от ваша оболочка и, возможно, ее конфигурация, она уже может работать.

Предполагая, что вы на самом деле пробовали, а это не так, вам нужно поставить свою программу в каталог, который находится на вашем $PATH.

$ echo $PATH 

видеть двоеточие (:) список разделенных кандидатов каталогов, таких как /usr/local/bin, где вы могли бы mv его, или в качестве альтернативы вы можете поместить его в любом месте вы хотите, и добавить, что $PATH:

$ mkdir -p ~/my-progs 
$ mv prog ~/my-progs 
$ echo 'export PATH="$HOME/my-progs:$PATH"' >> ~/.bashrc 
$ source ~/.bashrc 

Предполагаете, что вы используете bash (отметьте echo $SHELL).

Смежные вопросы