У нас є env (1), щоб змінити середовище команди, яку ми хочемо виконати (наприклад env MANPAGER=more man dtrace). Чи є щось подібне, але для зміни каталогу, в якому буде запущена команда?
В ідеалі я хотів би, щоб це виглядало так:
theMagicCommand /new/cwd myProgram
Таким чином, він може бути "пов'язаний" з іншими командами, подібними до env (1), наприклад,
daemon -p /tmp/pid env VAR=value theMagicCommand /new/cwd myProgram
Поки що я можу придумати таке рішення, яке, на жаль, не має такого ж інтерфейсу, як env (1):
cd /new/cwd && myProgram
Також я можу просто створити простий скрипт оболонки на зразок цього:
#! /bin/sh -
cd "${1:?Missing the new working directory}" || exit 1
shift
exec "${@:?Missing the command to run}"
але я шукаю щось, що вже існує (принаймні, на macOS та FreeBSD).
myProgramце не обов'язково настільний додаток (у такому випадку я можу просто використовувати клавішу Path у файлі .desktop ).
env. Погляньте env. Порівняйте це rtprio, idprio, numactl, jexec, chrt, і в самому справі команди в набори інструментів згадується у відповідях. Існує схема, і це ланцюгова навантаження.
(cd the/cwd; cmd)?
(cd the/cwd; cmd)до env (1), не обернувши його SH (1).
cd /new/cwd && env VAR=value myProgramне відповідає вашим критериям?