特定のディレクトリで任意のコマンドを実行できるコマンドはありますか?
Debian 10 では簡単に使用できますenv --chdir
。ただし、env --chdir
Debian 9インストールでは使用できません。
私が実行したいコマンドの一部は、スペースやその他の特殊文字を含めることができるシェル変数で構成されています。たとえば、私が実行したいコマンドが次のようになっているとします。
strace -- "$@"
したがって、以下は機能しません。
sudo -i sh -c 'cd my-directory && exec strace -- "$@"'
ええ、なぜこれを行うのですか?
sudo -i
/を使ってsudo --login
コマンドを実行したいです。しかし、rootユーザーのホームディレクトリではなく、特定のディレクトリでコマンドを実行したいと思います。環境変数を設定できますが、sudo
ディレクトリを変更するオプションはないようです。
私は次の理由でこれを使用しますsudo -i
:1)私は実行中のプログラム(私のAnsible Playbook)に行きたいですHOME=/root
。これにより、プログラムが自分のホームディレクトリにルート所有ファイルを生成するのを防ぐことができます。 2)これはまったく新しい環境が私の問題を解決する最も原則的な方法のように聞こえますsudo
。-i
ベストアンサー1
これらの質問に対するあなたの要件が何であるかは明確ではないのでexec
無視します。-i
しかしcd
それsudo
まで
( cd «a directory»; sudo «a command» )
括弧は組み込み()
サブシェルを生成し、コマンドなどを生成します。したがって、プロセスの数は同じです。また、環境変数を操作するため、必要ありません。cd
sudo
env
sudo
env
sudo