構成場所:

構成場所:

この質問はベストプラクティスについてです。セキュリティシェルを介してログインしたり、ユーザーを切り替えたりすることがわかり、su効果su -lが異なります。また、設定に誤字があっても引き続きログインできるようにしたいです。色の定義を保存するのに理想的な場所はどこですか?これまで私はそれらをそこに入れました.bash_profile。に保存できますか.bashrc

構成場所:

ArchWikiによると

  • /etc/profile ソースアプリケーション/etc/profile.d/*.shはとに設定されています/etc/bash.bashrc
  • ~/.bash_profile それ以降はユーザー別に/etc/profile
  • ~/.bash_login.bash_profile見つからない場合)
  • ~/.profile.bash_profile見つからない場合)
  • /etc/skel/.bash_profileソースもあります~/.bashrc
  • ~/.bash_logout
  • /etc/bash.bashrc-DSYS_BASHRC="/etc/bash.bashrc"コンパイルフラグによって異なります。源泉/usr/share/bash-completion/bash_completion
  • ~/.bashrcそれ以降はユーザー別に/etc/bash.bashrc

これを保存してみましょう。 2つの色定義があります。 1つはコマンドプロンプト用、もう1つはコマンド用ですls

set_prompt () {
    Last_Command=$? # Must come first!
    Blue='\[\e[01;34m\]'
    White='\[\e[01;37m\]'
    Redbold='\[\e[01;31m\]'
    Greenbold='\[\e[01;32m\]'
    Greenlight='\[\e[00;32m\]'
    Blueintense='\[\033[00;96m\]'
    Purplelight='\[\e[00;35m\]'
    Yellowbold='\[\e[01;33m\]'
    Graydark='\[\e[01;90m\]'
    Reset='\[\e[00m\]'
    FancyX='\342\234\227'
    Checkmark='\342\234\223'

    PS1="${Graydark}\t "
    if [[ $Last_Command == 0 ]]; then
        PS1+="$Greenlight$Checkmark "
    else
        PS1+="$Redbold$FancyX "
    fi
    if [[ $EUID == 0 ]]; then
        PS1+="\\u@$Redbold\\h "
    else
        PS1+="$Greenlight\\u$White@$Redbold\\h "
    fi
    PS1+="$Graydark\\W $Redbold\\\$$Reset "
}
PROMPT_COMMAND='set_prompt'

set_ls () {
    Default='0;0'
    White='97'
    Yellowbold='01;33'
    Greenlight='00;32'
    Purplelight='00;35'
    Purplebold='01;35'
    Whitelight='00;37'
    Yellowlight='00;33'
    Graydark='00;90'
    # Highlight
    Highlightpurpledark='45'
    Highlightgraydark='100'
    LS_COLORS="fi=$Greenlight:di=$White;$Highlightgraydark:*.tex=$Purplebold"
    export LS_COLORS
}
set_ls

ベストアンサー1

環境変数を.bash_loginまたは.bash_profileに入れます。これは(エクスポート時に)サブシェルに継承され、各シェルに対してリセットする必要がないためです。実際にリセットするのは高価ではありませんが、サブシェル中に環境変数を別のものに設定したい場合に備えています。 .bashrcが設定をオーバーライドする場合、これを行うのは困難です。

他のすべて(関数を含む)については、.bash_loginとその友達がサブシェルから読み取られないので、.bashrcに入れようとします。 .bashrcは通常、構成ファイル/ログインスクリプトのいずれかを介して行われます。

もちろん、PS1の用途は若干異なります。 PS1を変更できる機能が欲しいからです。

(Bashの初期化ファイルは少し面白いです.ログインシェルはbash_profileと友達を読みますが、bashrcは読みません.ではありません。 https://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files)

.profile、.bash_profile、および.bash_loginの中から選択することは完全にあなた次第です。

タイプミスがある場合は、シェルを開いてスクリプトを変更してテストを実行してみてください。 :) 単純なタイプミスは重要ではありません。最悪の場合は、初期化スクリプトの読み取りを中断するか、残りの設定を混乱させることがあります。何らかの理由で.bashrcに「終了」がある場合を除いては、そうです。

おすすめ記事