LinuxãWSLïŒWindows Subsystem for LinuxïŒã§äœæ¥ããŠãããšã
- ããã³ãããèŠã¥ããâŠ
- ããã³ãããè²ä»ãã§è¡šç€ºãããâŠ
- ããã³ããã«Gitãã©ã³ãã衚瀺ããã...
- ããã³ããããã£ãããèŠãç®ã«ãããâŠ
ãšæãããšã¯ãããŸãããïŒ
bashã§ã¯ãPS1ïŒPrompt String 1ïŒprimary prompt stringïŒããšããç°å¢å€æ°ãèšå®ããããšã§ãããã³ããã®èŠãç®ãèªç±ã«ã«ã¹ã¿ãã€ãºã§ããŸãã
ãã®èšäºã§ã¯ãbashã®ããã³ããã®èŠãç®ã«ã€ããŠã以äžã®å 容ããµã³ãã«ã³ãŒããå³ãçšããŠãããããã解説ããŠããŸãã
- bashã®ããã³ããã®è¡šç€ºåœ¢åŒã倿Žããæ¹æ³
- bashã®ããã³ããã®ä»çµã¿ïŒ
PS1ãšã¯ïŒïŒ - ç°å¢å€æ°
PS1ãäžæçã«å€æŽããæ¹æ³ - ãã䜿ãç°å¢å€æ°PS1ã®ç¹æ®ã³ãŒãäžèЧ
- bashã®ããã³ããã®ä»çµã¿ïŒ
- bashã®ããã³ããã®è²ã倿Žããæ¹æ³
- bashã®ããã³ããã®ã«ã¹ã¿ãã€ãºäŸ
- ãŠãŒã¶ãŒåãç·è²ããã¹ãåãèµ€è²ããã£ã¬ã¯ããªãéè²ã«ãã
- æå»å ¥ãã®ããã³ãã
- Gitãã©ã³ãå ¥ãã®ããã³ãã
- bashã®ããã³ããã®ç°å¢å€æ°PS1ãæ°žç¶çã«èšå®ããæ¹æ³
bashã®ããã³ããã®è¡šç€ºåœ¢åŒã倿Žããæ¹æ³
bashã®ããã³ããã¯ç°å¢å€æ°PS1ã§ã«ã¹ã¿ãã€ãºã§ããŸãã
å
·äœçã«ã¯ãPS1ã¯ã¿ãŒããã«ã®äžçªå·Šã«ãã[user01@pc01 work]$ã®ãããªèŠãç®ãã«ã¹ã¿ãã€ãºã§ããŸãã

ãã®éšåã®ãé çªããè²ãã衚瀺ããå
容ããªã©ã¯ããã¹ãŠç°å¢å€æ°PS1ã®èšå®ã§å€ããããŸãã
å€ãã®LinuxïŒRHEL8 / CentOSç³»ïŒã§ã¯ãããã©ã«ãã§ç°å¢å€æ°PS1ã¯ä»¥äžã®ããã«ãªã£ãŠããŸãã
$ echo $PS1
[\u@\h \W]\$ ããã«å«ãŸãã\uã\hããããã³ããã«è¡šç€ºããæ
å ±ã衚ãç¹æ®ã³ãŒãã§ããããããã®æå³ã¯ä»¥äžã®ããã«ãªã£ãŠããŸãã
| ç¹æ®ã³ãŒã | æå³ |
|---|---|
\u | ãŠãŒã¶ãŒåïŒäŸïŒuser01ïŒã衚瀺ããã |
\h | ãã¹ãåïŒäŸïŒpc01ïŒã衚瀺ããã |
\W | ã«ã¬ã³ããã£ã¬ã¯ããªïŒæ«å°Ÿã®ãã£ã¬ã¯ããªã ãïŒã衚瀺ããã |
\$ | éåžžãŠãŒã¶ãŒã¯$ãrootã¯# |
ãã®ãããç°å¢å€æ°PS1ã[\u@\h \W]\$ã®å Žåã«ãããŠããŠãŒã¶ãŒåãuser01ããã¹ãåãpc01ãã«ã¬ã³ããã£ã¬ã¯ããªã/home/user01/workã®å Žåãbashã®ããã³ããã¯ä»¥äžã®ããã«ãªãããŠãŒã¶ãŒåããã¹ãåãã«ã¬ã³ããã£ã¬ã¯ããªã[]å
ã«è¡šç€ºãããŠããŸãã

è£è¶³
ç°å¢å€æ°PS1ã以äžã®ããã«ãããšããããªæãã«è²ãä»ããããšãã§ããŸãïŒä»¥äžã®å
容ã«ã€ããŠã¯ãããã詳ãã解説ããŸãïŒã
export PS1="[\[\e[32m\]\u\[\e[0m\]@\[\e[31m\]\h\[\e[0m\]:\[\e[34m\]\W\[\e[0m\]]$ "衚瀺äŸ

ç°å¢å€æ°PS1ãäžæçã«å€æŽããæ¹æ³
ãŸãã¯ããã£ãšãç°¡åãªããã®å Žã ãç°å¢å€æ°PS1ã倿Žããæ¹æ³ããã説æããŸãã
以äžã«ç€ºãããã«ãç°å¢å€æ°PS1ã®å€ãçŽæ¥æžãæããã ãã§ã衚瀺ãããããã³ããã¯å³åº§ã«å€ãããŸãã

ãã ããã¿ãŒããã«ãéãããšå ã®èšå®ã«æ»ãããããã¡ãã£ãšè©ŠããŠã¿ããããã©ããªèŠãç®ã«ãªãã確èªãããããšããå Žåã«æé©ã§ãã
äžæç倿Žã®ãã€ã³ã
- ã¿ãŒããã«ãéããã°å ã®èšå®ã«æ»ã
- bashã®åäœã«åœ±é¿ã¯ãªãã®ã§å®å¿
- ããã³ããã®ã«ã¹ã¿ãã€ãºã®ãã¹ãã«æé©
ãã䜿ãç°å¢å€æ°PS1ã®ç¹æ®ã³ãŒãäžèЧ
ç°å¢å€æ°PS1ã§ã¯ãåã«æååãæžãã®ã§ã¯ãªãããç¹æ®ã³ãŒãïŒãšã¹ã±ãŒãã·ãŒã±ã³ã¹ïŒãã䜿ã£ãŠããŸããŸãªæ
å ±ã衚瀺ã§ããŸãã
ããšãã°ã
- ãŠãŒã¶ãŒå
- ãã¹ãå
- ã«ã¬ã³ããã£ã¬ã¯ããª
- æå»
- bashã®ããŒãžã§ã³
- ã·ã§ã«å
ãªã©ãèªç±ã«çµã¿åãããŠãèŠãããããã³ãããäœãããšãã§ããŸãã
äž»ãªç¹æ®ã³ãŒããšæå³äžèЧã以äžã«ç€ºããŸãã
| ç¹æ®ã³ãŒã | æå³ |
|---|---|
\a | ASCIIã®ãã«æåïŒ07ïŒãåºåããã ããŒãé³ã鳎ãã |
\d | æ¥ä»ããææ¥ æ æ¥ã®åœ¢åŒïŒäŸ: Tue Mar 19ïŒãã§è¡šç€ºãã |
\e | ASCIIã®ãšã¹ã±ãŒãæåïŒ033ïŒã衚瀺ããã\033ãšæžããŠãåãã |
\h | ãã¹ãåïŒäŸïŒpc01ïŒã衚瀺ããã |
\H | ãã¹ãåãFQDNã§è¡šç€ºããã |
\n | æ¹è¡ããïŒNew LineïŒã |
\r | 埩垰ããïŒCarriage ReturnïŒã |
\s | 䜿çšããŠããã·ã§ã«ã®ååã衚瀺ããã |
\A | çŸåšæå»ã24æé衚èšã®HH:MMã§è¡šç€ºããã |
\t | çŸåšæå»ã24æé衚èšã®HH:MM:SSã§è¡šç€ºããã |
\T | çŸåšæå»ã12æé衚èšã®HH:MM:SSã§è¡šç€ºããã |
\@ | çŸåšæå»ã12æé衚èšã®HH:MM AM/PMã§è¡šç€ºããã |
\u | ãŠãŒã¶ãŒåïŒäŸïŒuser01ïŒã衚瀺ããã |
\v | bashã®ããŒãžã§ã³ã衚瀺ããã |
\V | bashã®ãªãªãŒã¹çªå·ã衚瀺ããã |
\w | ã«ã¬ã³ããã£ã¬ã¯ããªããã«ãã¹ã§è¡šç€ºããïŒããŒã ãã£ã¬ã¯ããªé
äžã¯~ã«çç¥ãããïŒã |
\W | ã«ã¬ã³ããã£ã¬ã¯ããªïŒæ«å°Ÿã®ãã£ã¬ã¯ããªã ãïŒã衚瀺ããã |
\! | ãã®ã³ãã³ãã®å±¥æŽçªå·ã衚瀺ããïŒhistoryã³ãã³ãã®çªå·ã«äžèŽããïŒã |
\# | ã·ã§ã«èµ·ååŸã®ã³ãã³ãéãçªå·ã衚瀺ãã |
\$ | éåžžãŠãŒã¶ãŒã¯$ãrootã¯# |
\[ | ç»é¢ã«è¡šç€ºããªãå¶åŸ¡ã·ãŒã±ã³ã¹ãéå§ããã ããã䜿ã£ãŠæåã®è²ãªã©ã®å¶åŸ¡ã·ãŒã±ã³ã¹ãåã蟌ãã |
\] | ç»é¢ã«è¡šç€ºããªãå¶åŸ¡ã·ãŒã±ã³ã¹ãçµäºãã |
åŸã»ã©è©³ãã解説ããŸãããæåŸã®\[ãš\]ã¯éèŠã§ããããã³ããã«ãè²ããä»ãããšãã¯\e[è²ãè£
食ã®ã³ãŒãmã®ã³ãŒãã䜿ããŸããããã®ã³ãŒãã\[ ... \]ã®äžã«åã蟌ã¿ãŸãã
å®éã«åç¹æ®ã³ãŒãã®åºåãèŠãŠã¿ããšã以äžã®ããã«ãªããŸãã

bashã®ããã³ããã®è²ã倿Žããæ¹æ³
bashã®ããã³ããã®è²ã¯ä»¥äžã®åœ¢åŒã§æå®ããããšãã§ããŸãã
\[\e[è²ãè£
食ã®ã³ãŒãm\]\e[è²ãè£
食ã®ã³ãŒãmã\[ ... \]ã§å²ãã§ããŸããããããç°å¢å€æ°PS1ã«çµã¿èŸŒããšãããã³ããã«å¥œããªè²ãã€ããããŸãã
è£è¶³
\eã¯\033ãšæžããŠãåããªã®ã§ã以äžã®ãããªåœ¢åŒã§ãæå®ã§ããŸãã
\[\033[è²ãè£
食ã®ã³ãŒãm\]äŸãã°ãèµ€è²ã«ããå Žåã«ã¯ã以äžã®ããã«æå®ããŸãïŒ31ãæå®ãããšãèµ€è²ã«ãªããŸãïŒã
\[\e[31m\]äŸãã°ãç°å¢å€æ°PS1ã以äžã®ããã«ãããšãèµ€è²ã§è¡šç€ºãããŠããããšãããããŸãïŒæ«å°Ÿã®[\e[0m]ã¯èšå®ããªã»ããããããã«è¿œå ããŠããŸãïŒã

ããã§ã代衚çãªãè²ãè£ é£Ÿã®ã³ãŒããã以äžã«ãŸãšããŸãã
| ã³ãŒã | æŠèŠ |
|---|---|
0 | ãã¹ãŠãæªèšå®ïŒããã©ã«ãïŒã«æ»ãã\[\e[0m\]ãšæžããŠãã0ãæžããã«mã ãã§ã\[\e[m\]ãšæžããŠãåãæ±ãã |
1 | 倪åïŒããŒã«ãïŒã§è¡šç€ºã |
2 | èãæåïŒãã§ã€ã³ãïŒã§è¡šç€ºã |
3 | æäœïŒã€ã¿ãªãã¯ïŒã§è¡šç€ºã |
4 | äžç·ïŒã¢ã³ããŒã©ã€ã³ïŒãåŒãã |
5 | ç¹æ»
ïŒããªã³ã¯ïŒãããã çŸä»£ã®ç«¯æ«ã§ã¯ç¡å¹åãããŠããããšãå€ãã |
6 | é«éç¹æ»
ãããã çŸä»£ã®ç«¯æ«ã§ã¯ç¡å¹åãããŠããããšãå€ãã |
7 | ãªããŒã¹ïŒåæ¯è²ãšèæ¯è²ãå転ãããïŒã |
8 | æåãé ãïŒäžå¯èŠïŒã |
9 | åãæ¶ãç·ïŒã¹ãã©ã€ã¯ã¹ã«ãŒïŒã |
30 | 忝è²ïŒé»ïŒ#000000ïŒ |
31 | 忝è²ïŒèµ€ïŒ#ff0000ïŒ |
32 | 忝è²ïŒç·ïŒ#00ff00ïŒ |
33 | 忝è²ïŒé»ïŒ#ffff00ïŒ |
34 | 忝è²ïŒéïŒ#0000ffïŒ |
35 | 忝è²ïŒããŒã³ã¿ïŒ#ff00ffïŒ |
36 | 忝è²ïŒã·ã¢ã³ïŒ#00ffffïŒ |
37 | 忝è²ïŒçœïŒ#ffffffïŒ |
38 | 忝è²ïŒæ¡åŒµè² ã» 38;5;xïŒ256è²ãã¬ããã®è²çªå·ã§æå®ããïŒãäŸïŒ 38;5;196ïŒçã£èµ€ïŒãŸã㯠㻠38;2;r;g;bïŒRGBã§æå®ããïŒãäŸïŒ 38;2;255;100;0ïŒãªã¬ã³ãžïŒ |
39 | 忝è²ãããã©ã«ãã«æ»ãã0ïŒãªã»ããïŒãšéãã忝è²ã ãããªã»ããã§ããã®ããã€ã³ãã |
40 | èæ¯è²ïŒé»ïŒ#000000ïŒ |
41 | èæ¯è²ïŒèµ€ïŒ#ff0000ïŒ |
42 | èæ¯è²ïŒç·ïŒ#00ff00ïŒ |
43 | èæ¯è²ïŒé»ïŒ#ffff00ïŒ |
44 | èæ¯è²ïŒéïŒ#0000ffïŒ |
45 | èæ¯è²ïŒããŒã³ã¿ïŒ#ff00ffïŒ |
46 | èæ¯è²ïŒã·ã¢ã³ïŒ#00ffffïŒ |
47 | èæ¯è²ïŒçœïŒ#ffffffïŒ |
48 | èæ¯è²ïŒæ¡åŒµè² ã» 48;5;xïŒ256è²ãã¬ããã®è²çªå·ã§æå®ããïŒãäŸïŒ 48;5;196ïŒçã£èµ€ïŒãŸã㯠㻠48;2;r;g;bïŒRGBã§æå®ããïŒãäŸïŒ 48;2;255;100;0ïŒãªã¬ã³ãžïŒ |
49 | èæ¯è²ãããã©ã«ãã«æ»ãã0ïŒãªã»ããïŒãšéããèæ¯è²ã ãããªã»ããã§ããã®ããã€ã³ãã |
ãªãã2ã€ä»¥äžã®ã³ãŒããåæã«é©çšãããå Žåã¯ãã»ãã³ãã³;ã§ã€ãªãã§1ã€ã®æå®ã«ãŸãšããŸããäžäŸã以äžã«ç€ºããŸãã
\[\e[0;31m\] : ãªã»ããããŠæšæºã®èµ€
\[\e[1;31m\] : 倪åã®èµ€
\[\e[4;31m\] : äžç·ãåŒããèµ€è²ãè£
食ã®èšå®åŸã«ã¯ããªã»ããã¯å¿
é ã§ããæåŸã«\[\e[0m\]ãŸãã¯\[\e[m\]ã§èšå®ããªã»ããããªããšãå
¥åããæåãè²ä»ãã§è¡šç€ºãããã®ã§æ³šæããŠãã ããã

bashã®ããã³ããã®ã«ã¹ã¿ãã€ãºäŸ
ã§ã¯å®éã«ãbashã®ããã³ããã®è¡šç€ºåœ¢åŒãè²ã倿Žããã«ã¹ã¿ãã€ãºäŸãèŠãŠã¿ãŸãããã
ãŠãŒã¶ãŒåãç·è²ããã¹ãåãèµ€è²ããã£ã¬ã¯ããªãéè²ã«ãã
PS1="[\[\e[32m\]\u\[\e[0m\]@\[\e[31m\]\h\[\e[0m\]:\[\e[34m\]\W\[\e[0m\]]$ "衚瀺äŸ

- ãŠãŒã¶ãŒå â ç·ïŒ
\[\e[32m\]ïŒ - ãã¹ãå â èµ€ïŒ
\[\e[31m\]ïŒ - ãã¹ â éïŒ
\[\e[34m\]ïŒ @ã:ã衚瀺åŸã¯ããã©ã«ã衚瀺ã«ãã â ãªã»ããïŒ\[\e[0m\]ïŒ
æå»å ¥ãã®ããã³ãã
PS1="[\A][\[\e[32m\]\u\[\e[0m\]@\[\e[31m\]\h\[\e[0m\]:\[\e[34m\]\W\[\e[0m\]]$ "衚瀺äŸ

\Aâ çŸåšæå»ã24æé衚èšã®HH:MMã§è¡šç€ºããã
Gitãã©ã³ãå ¥ãã®ããã³ãã
PS1='[\[\e[32m\]\u\[\e[0m\]@\[\e[31m\]\h\[\e[0m\]:\[\e[34m\]\W\[\e[0m\]]\[\e[33m\]$(__git_ps1 " (%s)")\[\e[0m\]$ '衚瀺äŸ

$(__git_ps1 " (%s)")ã¯Gitã«ä»å±ãã__git_ps1ãšãã颿°ãåŒã³åºããŠãçŸåšã®Gitãã©ã³ãåãæŽåœ¢ããŠè¿ã圹å²ãæã£ãŠããŸãã__git_ps1ã¯æ¬¡ã®ãããªç¹åŸŽãæã€ãå
¬åŒã®é¢æ°ã§ãã
- Gitããã±ãŒãžã«å«ãŸãã
git-prompt.shãšããã¹ã¯ãªããã«å®çŸ©ãããŠãã- PS1ã®äžã§å®å šã«å®è¡ã§ããããã«ãªã£ãŠãã
è£è¶³
ããã__git_ps1: command not foundãšè¡šç€ºãããå Žåã¯ã~/.bashrcã§æ¬¡ã®ããã«git-prompt.shãèªã¿èŸŒãã§ãã ããã
if [ -f /etc/bash_completion.d/git-prompt ]; then
source /etc/bash_completion.d/git-prompt
fiãªãã__git_ps1ãå®çŸ©ããŠããgit-prompt.shã®å Žæã¯ããã£ã¹ããªãã¥ãŒã·ã§ã³ã«ãã£ãŠç°ãªããŸãã代衚çã«ã¯æ¬¡ã®ãããªãã¹ã«çœ®ãããŠããããšãå€ãã§ãã
/usr/share/git/completion/git-prompt.sh/etc/bash_completion.d/git-prompt
ç°å¢ã«ãã£ãŠã©ã¡ãã«ãããéããããååšç¢ºèªãããªããsourceããããã«ããŠãããšå®å
šã§ãã
bashã®ããã³ããã®ç°å¢å€æ°PS1ãæ°žç¶çã«èšå®ããæ¹æ³
ãããŸã§ç޹ä»ããç°å¢å€æ°PS1ã®ã«ã¹ã¿ãã€ãºã¯ããã®ãŸãŸã§ã¯ãäžæçããªå€æŽã«ãããªããŸãããã¿ãŒããã«ãéãããšèšå®ã¯å
ã«æ»ã£ãŠããŸããŸããæ¯ååãããã³ããã䜿ãããå Žåã¯ã~/.bashrcã«ç°å¢å€æ°PS1ãæžã蟌ãã§æ°žç¶åããŸãã
~/.bashrcãéããŠããã¡ã€ã«æ«å°Ÿã«PS1ã远å ããŸããäŸãã°ã以äžã®ããã«æžããŠãããŸãã
export PS1="[\[\e[32m\]\u\[\e[0m\]@\[\e[31m\]\h\[\e[0m\]:\[\e[34m\]\W\[\e[0m\]]$ "ãªãã.bashrcãç·šéããã ãã§ã¯ãèšå®ã¯åæ ãããªãã®ã§æ³šæããŠãã ããã以äžã®ã³ãã³ããå®è¡ããŠ.bashrcã®èšå®ãåæ ãããå¿
èŠããããŸãã
source ~/.bashrcã¿ãŒããã«ãåèµ·åããŠãèšå®ã¯åæ ãããŸãããsourceã³ãã³ãã䜿ããšããã«åæ ã§ããŸãã
æ¬èšäºã®ãŸãšã
ãã®èšäºã§ã¯bashããã³ããã®ãè²ã»è¡šç€ºåœ¢åŒã®å€æŽæ¹æ³ããšãGitãã©ã³ãè¡šç€ºæ¹æ³ãã«ã€ããŠèª¬æããŸããã
ãã®èšäºã§è§£èª¬ããå 容ã䜿ãã°ã
- èŠãããé è²ã«ãã
- æå»ãGitãã©ã³ãã衚瀺ãã
- 䜿ããããããã³ãããæ°žç¶èšå®ãã
ãšãã£ãããšãç°¡åã«ã§ããŸããèªåã®äœæ¥ã¹ã¿ã€ã«ã«åãããŠããã²ããã³ãããã«ã¹ã¿ãã€ãºããŠã¿ãŠãã ããïŒ
ãèªã¿ããã ãããããšãããããŸããã