Wir haben env (1) , um die Umgebung des Befehls zu ändern, den wir ausführen möchten (zum Beispiel env MANPAGER=more man dtrace
). Gibt es etwas Ähnliches, nur um das Verzeichnis zu ändern, in dem der Befehl gestartet werden soll?
Im Idealfall möchte ich, dass es so aussieht:
theMagicCommand /new/cwd myProgram
Auf diese Weise könnte es mit anderen env (1) -ähnlichen Befehlen "verkettet" werden, z.
daemon -p /tmp/pid env VAR=value theMagicCommand /new/cwd myProgram
Bisher kann ich mir folgende Lösung vorstellen, die leider nicht das gleiche Interface wie env (1) hat:
cd /new/cwd && myProgram
Außerdem kann ich einfach ein einfaches Shell-Skript wie das folgende erstellen:
#! /bin/sh -
cd "${1:?Missing the new working directory}" || exit 1
shift
exec "${@:?Missing the command to run}"
aber ich suche etwas, das es schon gibt (zumindest unter macOS und FreeBSD).
myProgram
ist nicht unbedingt eine Desktop-Anwendung (in diesem Fall könnte ich einfach den Pfadschlüssel in einer .desktop-Datei verwenden ).
env
. Schau mal env
. Vergleichen Sie es mit rtprio
, idprio
, numactl
, jexec
, chrt
, und in der Tat die Befehle in den Toolsets in den Antworten erwähnt. Es gibt ein Muster und es ist Kettenladen.
(cd the/cwd; cmd)
?
(cd the/cwd; cmd)
zu env (1) übergehen , ohne es mit sh (1) zu umschließen .
cd /new/cwd && env VAR=value myProgram
nicht Ihren Kriterien?