
Bash内部を使用してWatchモードを無効にできますset +m
。 Bashの呼び出しパラメータを使用してこれを実行できるかどうか疑問に思います。つまり、次のようになります。
bash +o monitor
おそらく:
bash +m
私はしばらくBashのマンページを見ましたが、これは不可能なようです。
答え1
チートを使用しない限り、呼び出し時にコマンドラインオプション/引数を使用して対話型bashセッションのモニタモードを無効にすることは不可能です。私はソースコード(主にファイル)を調べてこれを決めました。シェルそして仕事.c。git clone git://git.savannah.gnu.org/bash.git
検索を容易にするためにリポジトリをローカルに複製しました。
Bash起動シーケンスはモニターモードを有効にしているため、呼び出し時にモニターモードを無効にすることはできません。後ろにさまざまなオプション/パラメータを処理します。bash +o monitor
bashを呼んでも一時的に設定オプションからparse_shell_options
後で次の関数を呼び出す関数です。set_job_control
(対話型モードの場合も同様です。)グローバル変数 "job_control"をtrue("interactive"パラメータ値)に設定します。
インタラクティブコマンドには監視モードを無効にする機能がありますが、監視モードはデフォルトのショッピングオプションではないため、+O
この機能を介した潜在的なショッピングパスrun_shopt_alist
は目の前の路地です。shopt
shopt -o -u monitor
チート方法は外部ファイルに依存します。含まれている代替bashrcファイルを生成しset +m
(オプションで実際の〜/ .bashrcを取得した後)、次のようにbashを呼び出します。
bash --rcfile /path/to/that/alternate_bashrc_file
これは、rcfileの解析が完了したために機能します。run_startup_files
機能)後ろに set_job_control
最終的にシェルオプションを設定できるように呼び出されます。
答え2
モニターは無効にするように設定できます。
$ bash +o monitor -c 'shopt -op monitor'
shopt +o monitor
しかし、ただ非対話型シェル(シングルライナー(-c)などのスクリプト)の場合。
対話型シェルの場合、以下を試してもモニターが再びアクティブになります。
$ bash +o monitor
~/.bashrc sourced
$ shopt -op monitor
set -o monitor
$ exit
ただし、bashrc
ファイルのロード中に無効にする行を含めることができます(上記の図を参照)。