suコマンドの終了ステータス
suコマンドの-cオプションを使ったときの終了ステータスについて調べてみた。
testユーザは存在し、aaaユーザは存在しない。また、testファイルも存在しない。
まずはsuコマンドの正常終了時
# su - test -c "ls"
# echo $?
出力は0であった。
次にsuコマンドの異常終了時
# su - aaa -c "ls"
# echo $?
出力は1
次にsuコマンドの-cオプションの中のコマンドの異常終了時
# su - test -c "ls test"
# echo $?
出力は2
# ls test
の終了ステータスも2であり、-cオプションが失敗すると2が返されるのか、それとも-cオプションで実行されたコマンドの終了ステータスが返されるのか疑問だったため、以下を実行
# su - test -c "exit 3"
# echo $?
出力は3
まとめ
suコマンド成功で終了ステータス0、失敗で1、-cオプションを使用した場合についてはそのコマンドの終了ステータスが返される。
感想
あとあと考えてみると、suで権限変えた後、-cオプションの中のコマンド実行してるから、当然$?には-cオプションで指定したコマンドの終了ステータスが入ってるなと…
Author And Source
この問題について(suコマンドの終了ステータス), 我々は、より多くの情報をここで見つけました https://qiita.com/ryo415/items/e3a0df520365fc5eb7bf著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .