■ シェルについて
Linuxで最も一般的なシェルは、bash(Bourne-Again Shell)です。
Armadillo X1/G3/G3L/640に採用されているDebian GNU/Linuxでも、標準のシェルとしてbashが採用されています。
現在使われているシェルは、以下のコマンドで分かります。
root@armadillo:~# echo $SHELL /bin/bash root@armadillo:~#
■ シェルプロンプトの環境変数
シェルプロンプトは、PS1環境変数で設定されています。
root@armadillo:~# echo "$PS1" ${debian_chroot:+($debian_chroot)}\u@\h:\w\$ root@armadillo:~#
PS1環境変数は、/etc/bash.bashrc中に記載されています。
root@armadillo:~# cat /etc/bash.bashrc # System-wide .bashrc file for interactive bash(1) shells. # To enable the settings / commands in this file for login shells as well, # this file has to be sourced in /etc/profile. # If not running interactively, don't do anything [ -z "$PS1" ] && return # check the window size after each command and, if necessary, # update the values of LINES and COLUMNS. shopt -s checkwinsize # set variable identifying the chroot you work in (used in the prompt below) if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then debian_chroot=$(cat /etc/debian_chroot) fi # set a fancy prompt (non-color, overwrite the one in /etc/profile) PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' # Commented out, don't overwrite xterm -T "title" -n "icontitle" by default. # If this is an xterm set the title to user@host:dir #case "$TERM" in #xterm*|rxvt*) # PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"' # ;; #*) # ;; #esac # enable bash completion in interactive shells #if ! shopt -oq posix; then # if [ -f /usr/share/bash-completion/bash_completion ]; then # . /usr/share/bash-completion/bash_completion # elif [ -f /etc/bash_completion ]; then # . /etc/bash_completion # fi #fi # if the command-not-found package is installed, use it if [ -x /usr/lib/command-not-found -o -x /usr/share/command-not-found/command-not-found ]; then function command_not_found_handle { # check because c-n-f could've been removed in the meantime if [ -x /usr/lib/command-not-found ]; then /usr/lib/command-not-found -- "$1" return $? elif [ -x /usr/share/command-not-found/command-not-found ]; then /usr/share/command-not-found/command-not-found -- "$1" return $? else printf "%s: command not found\n" "$1" >&2 return 127 fi } fi
■ PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 'の意味
' ' | で囲まれた\u@\h:\w\$の部分が、シェルプロンプトとして表示されます。 |
---|---|
\u | ユーザ名を表示します。 |
\h | ホスト名を表示します。 |
\w | ホームディレクトリを基準にカレントディレクトリを表示します。 |
\$ | \$: rootユーザの場合は#、それ以外のユーザの場合$を表示します。 |
※ debian_chrootについて
debian_chrootは、chrootコマンドでルートディレクトリを変更した環境の場合に、どの環境を使用中かプロンプトから区別するために使用します。
このためchrootを利用しない場合、debian_chrootは必要ありません。
詳細は、以下を参照してください。
https://askubuntu.com/questions/372849/what-does-debian-chrootdebian-chroot-do-in-my-terminal-prompt
■ ホスト名の変更
方法1
シェルプロンプトを変更する例として、ここではホスト名を変更してみます。
現在のホスト名は、以下のコマンドで確認できます。
root@armadillo:~# hostname armadillo
ここでは現在のホスト名がarmadilloであることが分かります。
ホスト名は/etc/hostnameに記述されています。
root@armadillo:~# cat /etc/hostname armadillo
また、ドメイン名は/etc/hostsに記述されています。
root@armadillo:~# cat /etc/hosts 127.0.0.1 localhost 127.0.0.1 armadillo ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
ホスト名を変更する場合は、/etc/hostnameと/etc/hostsの両方を変更します。
ホスト名をarmadilloからarmadillo-g3に変更した場合の例を以下に示します。
root@armadillo:~# cat /etc/hostname armadillo-g3 root@armadillo:~# cat /etc/hosts 127.0.0.1 localhost 127.0.0.1 armadillo-g3 ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
変更したホスト名は、Armadilloを再起動すると有効になります。
root@armadillo:~# reboot Unmounting /opt/license... [ OK ] Stopped target Graphical Interface. Stopping User Manager for UID 0... Stopping Authorization Manager... Stopping Session c1 of user root. [ OK ] Stopped target Timers. ・・・・・・・・・・ Debian GNU/Linux 9 armadillo-g3 ttymxc4 armadillo-g3 login: root Password:
また、以下のコマンドを実行することで、変更したホスト名を一時的に有効にできます。
root@armadillo:~# hostname -F /etc/hostname root@armadillo:~# hostname -f armadillo-g3
方法2
ホスト名は、hostnamectlでも変更できます。
root@armadillo-g3:~# hostnamectl set-hostname armadillo IPVS: Creating netns size=912 id=3 root@armadillo-g3:~# cat /etc/hostname armadillo
■ その他のシェルプロンプトの変更について
bashシェルのプロンプトは、設定ファイル(.bashrc)でも変更できます。
root@armadillo-g3:~# cat .bashrc # ~/.bashrc: executed by bash(1) for non-login shells. # Note: PS1 and umask are already set in /etc/profile. You should not # need this unless you want different defaults for root. # PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' # umask 022 # You may uncomment the following lines if you want `ls' to be colorized: # export LS_OPTIONS='--color=auto' # eval "`dircolors`" # alias ls='ls $LS_OPTIONS' # alias ll='ls $LS_OPTIONS -l' # alias l='ls $LS_OPTIONS -lA' # # Some more alias to avoid making mistakes: # alias rm='rm -i' # alias cp='cp -i' # alias mv='mv -i'
例えば、シェルプロンプトに日付を表示させたい場合は、PS1環境変数のコメントを外し、\dを追加します。
root@armadillo-g3:~# cat .bashrc # ~/.bashrc: executed by bash(1) for non-login shells. # Note: PS1 and umask are already set in /etc/profile. You should not # need this unless you want different defaults for root. PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w \d\$ ' # umask 022 # You may uncomment the following lines if you want `ls' to be colorized: # export LS_OPTIONS='--color=auto' # eval "`dircolors`" # alias ls='ls $LS_OPTIONS' # alias ll='ls $LS_OPTIONS -l' # alias l='ls $LS_OPTIONS -lA' # # Some more alias to avoid making mistakes: # alias rm='rm -i' # alias cp='cp -i' # alias mv='mv -i'
上記編集が完了したら、以下のコマンドで.bashrcを実行します。
root@armadillo:~# source .bashrc root@armadillo:~ Sun Sep 01#
bashシェルのプロンプトに設定できる変数は、以下を参照して下さい。
Bash Reference Manual (6.9 Controlling the Prompt)
https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Controlling-the-Prompt