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).
myProgram
nã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 myProgram
não atende aos seus critérios?