Рабочий каталог при запуске команды

5

У меня есть исполняемый файл, назовем его exec. Он живет в каталоге, ради аргумента, называемого dir. Предположим, что это в корне файловой системы. Я могу запустить этот исполняемый файл, выполнив

cd /dir
./exec

Если я попытаюсь запустить его из другого места, сделав

/dir/exec

он не запускается. Из сообщения об ошибке он извивается, похоже, что он пытается найти файлы поддержки в каталоге, из которого была запущена команда, а не в ее собственном каталоге. До сих пор не массивная проблема. Тем не менее, я хотел бы добавить псевдоним команды, чтобы я мог ее вызывать из любого места. Я могу написать псевдоним следующим образом:

alias foo="cd /dir;./exec &"

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

Можно ли это сделать?

    
задан TimD 19.01.2013 в 13:56
источник

2 ответа

7

Да, запустите еще одну оболочку:

alias foo="sh -c 'cd /dir; ./exec &'"

Или используйте подоболочку:

alias foo="(cd /dir; ./exec &)"
    
ответ дан Dennis Kaarsemaker 19.01.2013 в 14:11
источник
0

Вы также можете сделать следующее: предположим, что файл для выполнения в любом месте называется: executeme

  1. Если это не исполняемый файл, введите следующую команду, чтобы выполнить его excutable

chmod + x executeme

  1. Если вы находитесь в каталоге, в котором файл делает символическую ссылку на него в каталоге bin (для этого вы должны быть root)

sudo ln -s executeme / usr / bin /

  1. Если все правильно, вы можете в любой момент распечатать свой файл, набрав имя файла

executeme     

ответ дан Serge Oliver 19.01.2013 в 14:54