Chúng tôi có env (1) để sửa đổi môi trường của lệnh chúng tôi muốn chạy (ví dụ env MANPAGER=more man dtrace
). Có một cái gì đó tương tự nhưng để sửa đổi thư mục mà lệnh sẽ được bắt đầu trong?
Lý tưởng nhất, tôi muốn nó trông như thế này:
theMagicCommand /new/cwd myProgram
Bằng cách này, nó có thể được "xâu chuỗi" với các lệnh giống như env (1) khác, vd
daemon -p /tmp/pid env VAR=value theMagicCommand /new/cwd myProgram
Cho đến nay tôi có thể nghĩ ra giải pháp sau, thật không may, không có giao diện giống như env (1):
cd /new/cwd && myProgram
Ngoài ra, tôi chỉ có thể tạo một tập lệnh shell đơn giản như thế này:
#! /bin/sh -
cd "${1:?Missing the new working directory}" || exit 1
shift
exec "${@:?Missing the command to run}"
nhưng tôi đang tìm kiếm thứ gì đó đã tồn tại (ít nhất là trên macOS và FreeBSD).
myProgram
không nhất thiết phải là một ứng dụng máy tính để bàn (trong trường hợp đó tôi chỉ có thể sử dụng phím Path trong tệp .desktop ).
env
. Nhìn vào env
. So sánh nó với rtprio
, idprio
, numactl
, jexec
, chrt
, và thực sự là các lệnh trong bộ công cụ được đề cập trong câu trả lời. Có một mô hình, và nó đang tải chuỗi.
(cd the/cwd; cmd)
?
(cd the/cwd; cmd)
sang env (1) mà không gói nó bằng sh (1).
cd /new/cwd && env VAR=value myProgram
không đáp ứng phê bình của bạn?