逐語https://www.dazhuanlan.com/2019/08/26/5d62f93a80696/
bashの環境設定
Mac環境下での作業環境は、bashの下のデフォルトMacがされていない.bashrc
、いくつかの自動化ツールをリードすることは適切にされていない
、独自の環境変数、そして最終的に問題を設定します。
bashの役割のこれらの構成ファイル
-
.bash_profileの
文字通りの意味から、
profile
アカウントに関連付けられている、それが毎回ユーザのログインシステム読み込まれ、すべてのコマンドは、bashの内部で実行されます。
他のプレゼンスの内側のシェルでは.profile
と.login
これらの彼らがあると.bash_profile
役割は同じです。 -
bashrcに
文字通りの意味から、
rc
設定項目に関連付けられ、各bashは、ドキュメントを読んでます(プロセス)の時間を、開始しました。一般的には.bash_profileにそこ呼ぶ.bashrc
統一されたユーザーの環境を構成するためのスクリプト。 -
.bash_logout
より良い理解は、終了のシェルに読みます。だから我々は、この文書に私たちの仕事をクリーンアップするためにいくつかのコマンドを置くことができます。
同様に、いくつかのシステム・レベルの設定項目、など/etc/bashrc
と/etc/profile
、ユーザのホームディレクトリにある.bash_profile
、と.bashrc
するとき、CentOSの中で、二つの文書を読みます.bashrc
呼び出します/etc/bashrc
。また、.bash_history
bashシェルのための文書の歴史があります
二つのインタラクティブシェルプロパティ
かどうかの一つのinteractive shell
(対話型シェル)、他のかどうかlogin shell
(ログインシェル)
-
対話型シェル:非オプションの引数は、標準入力と標準出力端子またはBashのインスタンスに接続された無-cは、-iパラメータで始まりません。$は設定できますかPS1変数かどうかを検出することによって - 戻り値は、字幕私を含めるかどうかを判断するために。非オプションの引数には、どのようなものですか?このようbashの〜/のMyScript / clear_temp_files.shとしてはbashシェルスクリプトの例この実行スクリプトのパスは、非オプションの引数であるので、それは、インタラクティブシェルではありません。-cをしているのですか?パラメータは、このようなbashの-c「LS -ahl」、このプロセスは考慮されていないインタラクティブシェルはbashをシェルとして、渡された文字列を使用することです。
インタラクティブ非ログインシェルのドキュメントは、次の順序でロードされます。
12の/ etc / bashrcに〜/ .bashrcに -
番号の先頭にバッシュインスタンス、または-loginパラメータのBashシェルで始まる - 0の最初の引数:シェルをログインしてください。番号の先頭に - より奇妙な、0の最初のパラメータは何ですか?あなたが唯一の* nixのシステムにログオンする必要が、Macは行いますが、Linuxは行い、その後、$ 0エコーすることができ、あなたはそれが価値-bashであることが判明し、それは驚い理解するであろう。本当にそれがある - 数の始まり!!
ログインシェル(インタラクティブかどうか)は、以下の順にロードされたドキュメント:
1234/ etc / profileを〜/ .bash_profileの〜/ .bash_login〜/ .profileに
、どちらのインタラクティブシェル扱わず、またシェルをログに記録されていない場合のcrontabスクリプトは、ので、すべての設定は適用されません。
どのように対処するには?たとえば、あなたがshabangに変更することができ#!/bin/bash -l
、実行を説明するために、シェルのログインスクリプトを聞かせて、あなたは読み込むことができます/etc/profile
かバッシュインタプリタを起動し、プラス-l
パラメータもすることができます。
マックで何も実行が存在しない理由上記の情報は、説明する.bashrc
理由は、それが対話的なシェルですので、
シェルはセットとshoptを設定するためのコマンド
setコマンドは、シェル環境をカスタマイズ開いたり、オプションを閉じるためのオプションの「o」を使用するために使用することができます。:このようなオプション開くなどset -o
、プロジェクトの選択を閉じます。オプション:set +o
オプション。
内蔵setコマンドのオプション
オプション名 | クイックスイッチ | 意味 |
---|---|---|
allexport | -a | このオプションは、それがリセットされるまで、出力または修正変数であることを新たな変数をマーク自動的に起動するように設定されています |
braceexpand | -B | デフォルトの設定であるブレース展開を開き |
emacsの | 内蔵のエディタEmacsのコマンドライン編集、デフォルトの設定です使用します | |
erreximus | -e | 終了コマンドが非ゼロの終了状態(故障)場合を返すとき。文書を読むときに初期化を設定していません |
histexpand | -H | 実行履歴置換を開きます!そして!拡張、デフォルトの設定です |
歴史 | デフォルトでON、コマンドライン履歴を開きます | |
IGNOREEOF | EOF(Ctrlキー+ D)キーを使用して出口にシェルを禁止します。あなたは、終了するには、exitを入力する必要があります。IGNOREEOF = 10シェル変数を設定するのと同じ | |
キーワード | -k | コマンド環境へのキーワード引数 |
インタラクティブ-コメント | インタラクティブシェルの場合、テキスト文字#などの注釈の裏 | |
モニター | -m | ジョブ制御の設定 |
noclobberを | -C | リダイレクトの際に文書が書き換えられ防ぎます |
NOEXEC | -n | コマンドを読み込みますが実行はしません。スクリプトの構文をチェックするために使用します。対話型の実行時に開けないでください |
noglobファイル | -d | パス名と拡張子を禁止します。それは近いワイルドカードです |
知らせます | -b | ジョブがバックグラウンド完了したときにユーザーに通知 |
nounset | -u | これは、変数が拡張子を設定されていないエラーメッセージが表示されます |
onecmd | -t | quitコマンドを読み出して実行した後、 |
物理的 | -P | 設定する場合は、タイプのCDまたはPWDがシンボリックリンクを禁止しました。代わりに物理ディレクトリを使用します |
特権 | -p | 設定後、シェルの.profileまたはENVは、ドキュメントを読んでいない、そして環境からシェルの機能を継承していない、自動的にスクリプトにsetuid特権を開きます。 |
冗長 | -v | 詳細なデバッグモードをオンにします |
我々 | 内蔵のエディタviコマンドライン編集を使用します | |
XTRACE | -バツ | 为调试打开echo模式 |
shopt
命令是set
命令的一种替代,很多方面都和set
命令一样,但它增加了很多选项。可有使用-p
选项来查看shopt
选项的设置。-u
开关表示一个复位的选项,-s
表示选项当前被设置。
|
|
shopt命令选项
选项 | 含义 |
---|---|
cdable_vars | 如果给cd内置命令的参数不是一个目录,就假设它是一个变量名,变量的值是将要转换到的目录 |
cdspell | 纠正cd命令中目录名的较小拼写错误。检查的错误包括颠倒顺序的字符,遗漏的字符以及重复的字符。如果知道一处修改,正确的路径就打印出,命令将继续。只用于交互式shell |
checkhash | bash在试图执行一个命令前,先在哈希表中寻找,以确定命令是否存在。如果命令不存在,就执行正常路径搜索 |
checkwinsize | bash在每个命令后检查窗口大小,如果有必要,就更新LINES和COLUMNS的值 |
cmdhist | bash试图将一个多行命令的所有行保存在同一个历史项中。这使得多行命令的重新编辑更方便 |
dotglob | bash在文档名扩展的结果中包括以点(.)开头的文档名 |
execfail | 如果一个交互式shell不能执行指定给exec内置命令作为参数的文档,它不会退出。如果exec失败,一个交互式shell不会退出 |
expand_aliases | 别名被扩展。默认为打开 |
extglob | 打开扩展的模式匹配特征(正常的表达式元字符来自Korn shell的文档名扩展) |
histappend | シェルが終了、履歴リストではなく、文書を上書きするよりも、文書で指定された変数HISTFILEの値に加算されます場合には |
histreedit | readlineのが使用されている場合、ユーザーは失敗した履歴置換を再編集する機会を持っています |
histverify | 設定、およびreadlineのが使用されている場合、履歴置換の結果がすぐにシェルのパーザに渡されません。結果を行が、readlineの編集バッファにロードされ、さらに修飾可能 |
完全なホスト | セットした場合、およびbashの@含む単語を完了したときに使用されてreadineは、ホスト名の補完を実行しようとします。デフォルトはオープンです |
huponexit | 対話的なログインシェルが終了するには、bashはすべてのジョブにSIGHUP(ハングアップ信号)を送信するときに、設定した場合、 |
interactive_comments | 対話型シェルでは、#と同じ行の他の文字で始まる単語を許可するように無視されます。デフォルトはオープンです |
lithist | あなたが開いてcmdhistオプションも開いている場合は、複数行のコマンドは、セミコロンで可能に分離する必要なしに、改行と歴史に保存されています |
mailwarn | 設定した場合は、最後の検査がアクセスされているので、bashが電子メールや文書をチェックするために、メッセージは、「メールファイルでメールが読まれました」 |
nocaseglob | 設定した場合、文書名拡張子を実行する場合、bashは大文字と小文字を区別しない方法で、文書名と一致します |
nullglob | 設定されている場合、bashは、文書そのものではなく、空の文字列に任意の文書名の拡張子モードと一致しなかったことができます |
promptvars | 設定した場合は、プロンプト文字列は、拡張された後、変数とパラメータ展開を受けます。デフォルトはオープンです |
restricted_shell | シェルが制限モードで起動されている場合は、このオプションを設定します。この値を変更することはできません。スタートアップ文書を実行する場合、このオプションをリセットすることはできません、文書は限らシェルがあるかどうかを調べるために開始することができ |
ソースパス | 設定されている場合、組み込みコマンドのソースは、引数としてドキュメントを格納するディレクトリを検索するにはPATHの値を使用しています。デフォルトはオープンです |
ソース | ドット(。)シノニム |
shift_verbose | このオプションはカウントが移動位置のパラメータの数を超えた場合に、設定されている場合、組み込みの印刷エラーメッセージをシフト |