Зачем нам нужен "./" перед исполняемым файлом c ++, когда мы хотим его запустить? - PullRequest
0 голосов
/ 12 июня 2019

Предположим, у меня есть исполняемая программа на C ++ с именем lencode, и я хочу запустить ее с помощью UUOC.Я могу успешно запустить его с помощью следующей команды:

cat file.txt | ./lencode

Но теперь, из-за некоторых требований, я хочу вместо этого использовать мою командную строку в следующем формате:

cat file.txt | lencode

Мне не удалось запустить программу.Как мне этого добиться?

Ответы [ 2 ]

3 голосов
/ 12 июня 2019

Причина использования префикса ./ состоит в том, что текущий каталог (на который ссылается ярлык ".") отсутствует в переменной среды $PATH.

Один ответ: поместите "." в вашу $PATH среду.

Для Баш:

export PATH=$PATH:.

Для tcsh:

setenv PATH ${PATH}:.

Чтобы определить вашу оболочку:

echo $0

Для получения дополнительной информации о вашей оболочке:

man bash

или

man tcsh

Однако это угроза безопасности. Лучший способ сделать это (как отмечено в ответе Джастина Рамериза) - поместить каталог, содержащий lencode (/home/user/, если lencode расположен в /home/user/lencode), в ваш $PATH или переместить lencode в каталог, который находится в вашем $PATH.

Например, если вы используете tcsh в качестве оболочки:

mkdir $HOME/bin
cp lencode $HOME/bin
setenv PATH ${PATH}:$HOME/bin

Чтобы сохранить этот параметр при следующем входе в систему, поместите его в файл $HOME/.tcshrc:

setenv PATH ${PATH}:$HOME/bin
1 голос
/ 12 июня 2019

Добавьте каталог lencode на свой путь или переместите его в каталог, который находится на вашем пути. Возможно, вам не всегда нужен текущий каталог в вашем пути. Т.е. каждый раз, когда в вашем cwd есть файл, который называется именем команды.

...