9 私が行った場合 su - -c 'mkdir bin' user1 それから私は得る su: /usr/bin/ksh: No such file or directory ユーザーのシェルがkshinに設定され/etc/passwdてkshいて、インストールされていないためです。 質問 このような場合、ユーザーとしてコマンドを実行するにはどうすればよいですか? linux ubuntu centos bash — サンドラ ソース ユーザーのシェルが存在しないものに設定されているのはなぜですか? — MDMarra 1 /etc/passwdNISから来ています。 — サンドラ、 1 まあそれはそれを説明します。 — MDMarra
18 あなたが入れない場合は-後にsu、それはそのユーザの環境をロードしませんが、コマンドはまだそのユーザーとして実行されます。 私はあなたの実際の問題を誤解しているようです。他の人が言って-sいるように、おそらく実際に必要なオプションです。 — MDMarra ソース それでも/ etc / passwdにあるシェルを使用しようとしますが、これはより大きな問題のようです。 — フライハイト シェルはそれ自体のIDを$ SHELL環境変数に入れますが、/ etc / passwdはsuが実行するシェルを探す場所です。`-`は、「ログイン」シェルとして機能するように指示するシェル呼び出しに渡されます(bashはbashrcファイルの代わりにプロファイルファイルを実行し、作業ディレクトリを変更します) — freiheit
8 以下を使用できます。 su -s /bin/sh -c 'mkdir bin' user1 -ssu のオプションは、使用するシェルを指定し、/ etc / passwdにあるものを上書きします。 私はドロップ-あなたがuser1のホームディレクトリに「ビン」を作成することと思いますので、プロファイルのロードに加えて、それはおそらく、コマンドに対するユーザのホームディレクトリに作業ディレクトリを変更します、ので、あなたの現在の、あなたのコマンドからではありませんディレクトリ。 — 詐欺 ソース
5 suの-s /-shellオプションを使用すると、ユーザー環境の他の部分を維持しながら、使用するシェルを選択できると思います。/bin/shはposixで指定されているため、どこでも使用できるはずです。 — ローマン・A・テイチャー ソース