Temos o env (1) para modificar o ambiente do comando que queremos executar (por exemplo env MANPAGER=more man dtrace). Existe algo semelhante, exceto para modificar o diretório em que o comando será iniciado?
Idealmente, eu gostaria que fosse assim:
theMagicCommand /new/cwd myProgram
Dessa forma, ele pode ser "encadeado" com outros comandos do tipo env (1), por exemplo,
daemon -p /tmp/pid env VAR=value theMagicCommand /new/cwd myProgram
Até agora, posso pensar na seguinte solução, que infelizmente não possui a mesma interface que env (1):
cd /new/cwd && myProgram
Além disso, eu posso apenas criar um script de shell simples como este:
#! /bin/sh -
cd "${1:?Missing the new working directory}" || exit 1
shift
exec "${@:?Missing the command to run}"
mas estou procurando por algo que já existe (pelo menos no macOS e no FreeBSD).
myProgramnão é necessariamente um aplicativo de desktop (nesse caso, eu poderia apenas usar a chave Path em um arquivo .desktop ).
env. Olhe para env. Compare-a rtprio, idprio, numactl, jexec, chrt, e de fato os comandos nos conjuntos de ferramentas mencionado nas respostas. Existe um padrão e é o carregamento em cadeia.
(cd the/cwd; cmd)?
(cd the/cwd; cmd)para env (1) sem agrupá-lo com sh (1).
cd /new/cwd && env VAR=value myProgramnão atende aos seus critérios?