Лучший способ выполнить в определенной папке
Можно exec
в конкретной папке, а не мне нужно использовать две команды отдельно?
например
cd /opt/folderA
exec ....
cd /opt/folderB
exec ....
2 ответа
Единственный способ изменить текущий рабочий каталог для процесса:
а) запущенная программа меняет его, выполнив команду cd из самой программы
б) сначала перейдите в каталог, а затем запустите программу (наследует CWD из среды родительской оболочки)
c) манипулировать файлом /proc/[pid]/cwd. Единственный способ сделать это возможно - запустить отдельную оболочку bash, определить ее pid, изменить вышеупомянутый файл (ссылку), а затем запустить программу из этой оболочки bash.
Итак, чтобы ответить на ваш вопрос, нет никакой возможности обойти команду "cd", кроме опции (c), которая на самом деле включает в себя больше шагов, чем просто сначала запускает "cd".
Если эти две команды отличаются, вы можете добавить папку в вашу среду $PATH.
export PATH=$PATH:folderA:folderB
Или вы можете использовать псевдоним
alias fromA=/opt/folderA/command
alias fromB=/opt/folderB/command
после этого вы можете напрямую использовать
fromA
Добавление этого в ваш.bashrc сделает это навсегда.