Exitを呼び出した後、Bashでは何が起こりますか?

Exitを呼び出した後、Bashでは何が起こりますか?

私はシャットダウンを呼び出すときにこれがログアウトのエイリアスであることを知っています。時々楽しんでセッションを終了する必要がある場合は、次のように入力しますexit && 1。それではexit、実行後に何が起こりますか?どこに行きましたか1? Bashに1を入力すると(明らかに)、次のようになります1: command not found。なぜ1が機能しないのか尋ねません。私が尋ねたいのは、1が終了を呼び出した後にどこに行くのかです。 1は単なる例なので、別の命令に置き換えてください。

ただし、入力するとexit &&&&&&& 1構文エラーが発生します。だから右手を評価する必要があります。

婦人声明:これは私が興味を持っている質問です。この質問は何が起こっているのか疑問に思う以外に特別な理由はありません。

ベストアンサー1

と入力すると、exitシェルは1評価なしですぐに終了します。ソースコードを確認してみると出口、あなたは見ることができます:

int
exit_builtin (list)
     WORD_LIST *list;
{
  if (interactive)
    {
      fprintf (stderr, login_shell ? _("logout\n") : "exit\n");
      fflush (stderr);
    }

  return (exit_or_logout (list));
}

最後のものは次exitのとおりです。return (exit_or_logout (list))

static int
exit_or_logout (list)
     WORD_LIST *list;
{
  int exit_value;

  ..............

  /* Get return value if present.  This means that you can type
     `logout 5' to a shell, and it returns 5. */

  /* If we're running the exit trap (running_trap == 1, since running_trap
     gets set to SIG+1), and we don't have a argument given to `exit'
     (list == 0), use the exit status we saved before running the trap
     commands (trap_saved_exit_value). */
  exit_value = (running_trap == 1 && list == 0) ? trap_saved_exit_value : get_exitstat (list);

  bash_logout ();

  last_command_exit_value = exit_value;

  /* Exit the program. */
  jump_to_top_level (EXITPROG);
  /*NOTREACHED*/
}

exit &&&&&&& 1評価された式の結果ではなく、解析エラーによる構文エラーです。解析は、コマンドが実行される前に発生します。

おすすめ記事