AFAIK, não existe tal utilidade dedicada na caixa de ferramentas POSIX. Mas é comum invocar sh
para configurar um ambiente (cwd, limites, stdout / in / err, umask ...) antes de executar um comando como no seu script sh
.
Mas você não precisa escrever esse script em um arquivo, basta inseri-lo:
sh -c 'CDPATH= cd -P -- "$1" && shift && exec "$@"' sh /some/dir cmd args
(assumindo que o diretório não é -
). Adicionando CDPATH=
(caso haja um no ambiente) e -P
para que ele se comporte mais como um chdir()
.
Como alternativa, você pode usar perl
cujo chdir()
faz um chdir()
direto da caixa.
perl -e 'chdir(shift@ARGV) or die "chdir: $!"; exec @ARGV or die "exec: $!"
' /some/dir cmd args