我们有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
另外,我可以像这样创建一个简单的shell脚本:
#! /bin/sh -
cd "${1:?Missing the new working directory}" || exit 1
shift
exec "${@:?Missing the command to run}"
但是我正在寻找已经存在的东西(至少在macOS和FreeBSD上)。
myProgram
不一定是桌面应用程序(在这种情况下,我可以只使用.desktop文件中的Path键)。
env
。看看env
。比较它rtprio
,idprio
,numactl
,jexec
,chrt
,和确实在工具包中的命令在答案中提到。有一个模式,它是链加载。
(cd the/cwd; cmd)
?
(cd the/cwd; cmd)
使用sh(1)将其包装,则无法轻松传递给env(1)。
cd /new/cwd && env VAR=value myProgram
不满足您的标准?