この質問は、ベストプラクティスに関するものです。セキュアシェルを介してログインするか、ユーザーを切り替える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
環境変数は(エクスポートされると)サブシェルに継承され、シェルを呼び出すたびにリセットする必要がないため、.bash_loginまたは.bash_profileに配置します。それらをリセットすることは実質的に何の費用もかかるというわけではありませんが、サブシェルの期間中、envvarを他の何かに設定したい場合に備えて。 .bashrcが設定をオーバーライドする場合、これを行うのは困難です。
他のすべて(関数を含む)については、.bash_loginとその友達がサブシェルによって読み取られないため、それらを.bashrcに配置する必要があります。 .bashrcは通常、プロファイル/ログインスクリプトの1つを介して行われます。
もちろん、PS1を変更する関数が必要なため、PS1の使用方法は少し異なります。
(bashは初期化ファイルで少しおかしいです。ログインシェルはbash_profileとその仲間を読み取りますが、bashrcは読み取りません。非ログインシェルはまったく逆に機能します。したがって、bashrcがソースである場合を除き、すべてのシェル呼び出しで読み取られるファイルはありません。プロファイルスクリプト.ref。 https://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files )
.profile、.bash_profile、.bash_loginのいずれかを選択するのは完全にあなた次第です。もちろん、グローバル構成とユーザーごとの構成のどちらを選択するかは、すべてのユーザーの動作を変更するか、1人だけを変更するかによって異なります。
タイプミスについては、シェルを開いたままにし、スクリプトを変更した後、スクリプトをテスト実行します。 :)単純なタイプミスが問題になるわけではありません。最悪の場合、initスクリプトの読み取りを停止したり、残りの設定を台無しにしたりします。何らかの理由で.bashrcに「出口」がない限り。
質問は本質的に意見を求めているので、あなたは異なる答えを得るでしょう。たとえば、優れた設計手法では、特定の機能を提供するためにできるだけ少ない場所を使用します。シェル環境をカスタマイズするためにユーザーが行う作業の量を減らすために、このような情報をシステム領域に配置するものもあります。
私の環境では、ターミナルデータベースを使用し、この質問で提案されているエスケープシーケンスのハードコードされたリストの種類を可能な限り排除します。たとえば、私のディレクトリエディタでは、数字ではなくnamesを使用しています(LS_COLORS
はまったく使用していません)。
BSDも同様に、 ls
実装 でターミナルデータベースを使用しますが、「colorls」機能の構成可能性は低くなります。より構成可能ですが、GNU lsは、疑わしい結果をもたらします。たとえば、
TERM=vt100 dircolors
ショー
setenv LS_COLORS 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.Zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.Zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:'
which(ncurses FAQVT100で色を取得するにはどうすればよいですか?)を参照)は改善ではありません。
他の人は実際の色を取得するためにtput
を使用し、複数の構成ファイルに情報を分散するのではなく、単一の環境変数(TERM
)を介してカスタマイズを変更できるようにします。
カスタマイズをシステム領域に配置すると、更新がシステムに適用されるときにカスタマイズを維持するという欠点があります。さらに、いくつか(Fedoraのように)はすでにそこにあり(機能/ 256カラーターミナルを参照)、1つの変更を調整します以上のマシンが関与する可能性があります。
エイリアス と 関数 のすべてをファイルに入れることをお勧めします。通常は~/.bash_aliases
です。
まだ存在しない場合は、.bashrc
(または必要な場所)に次の行を追加できます。
# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
Ubuntu .bashrc
から取得したものですが、もちろんコメントは省略できます...
たとえば、Ubuntuでは標準ですが、そのような種類のファイルの使用はUbuntuよりも古いです...
注:
新しいマシンでアカウントを設定する方が快適です。