Вопрос:

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

c++ command-line cat

48 просмотра

2 ответа

3 Репутация автора

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

cat file.txt | ./lencode

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

cat file.txt | lencode

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

Автор: jeren_yaoye_lu Источник Размещён: 12.06.2019 02:58

Ответы (2)


3 плюса

41 Репутация автора

Причина использования ./префикса заключается в том, что текущий каталог (на который ссылается ярлык ".") не входит в $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
Автор: Kevin Размещён: 12.06.2019 03:08

1 плюс

26 Репутация автора

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

Автор: Justin Ramirez Размещён: 12.06.2019 10:50
Вопросы из категории :
32x32