Su -c は動作せず無視されます。

Su -c は動作せず無視されます。

suwithパラメーターを使用すると、-cコマンドをユーザーのシェルに渡して実行することが説明されています。

しかし、私の環境では、-cオプションを完全に無視してユーザーのシェルを変更します。

[root@mftf~]# su - demo -c "ls -la"

[demo@mftf~]$

ただし、コマンドなしで使用すると、引数が必要な-cエラーが表示されるため無視されません。 RHEL7を使用しています。-c

ベストアンサー1

-(または)を使用すると、-l指定されたユーザーの対話型ログインシェルを呼び出すことができます。

特定のユーザーに対してシェル初期化ファイルが実行する操作によっては、このコマンドが実行されないことがあります。たとえば、exec呼び出しシェルからコマンドライン引数を渡さずに直接または同じものを介してtmuxシェルを再実行すると、ssh-agentコマンド文字列が失われます。

たとえば、次のようになります。

if tmux has-session; then
    exec tmux attach-session
else
    exec tmux
fi

...myではこれが実行されない~/.profile理由です(代わりにインタラクティブシェルが内部的に起動されます)。su -l me some_commandsome_commandtmux

他のユーザーでコマンドを実行するには、sudo を使用します。

# su -c some_command username

Ubuntusu(1)のマニュアルから:

-、、、-l--login

ユーザーが直接ログインするときに期待するのと同様の環境を提供します。


または設定sudoして使用してください

$ sudo -u user some_command

おすすめ記事