私が読んだところによると、dash
コマンドを使用してシェルとして作成できる
~$ chsh shirish
Password:
Changing the login shell for shirish
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:
dash をインストールして、ログイン シェルのパス /bin/dash を指定するだけです。そうすると、読み込まれません.bashrc
が、おそらく読み込まれます.profile
。これは、.bashrc
切り取って貼り付けるだけで、.bashrc
履歴のサイズ、プロンプトの種類、および必要な cowsay インスタンスに関して、dash が bash とまったく同じように動作するかどうかです。
これが私の です.bashrc
。
$ cat .bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=3000
HISTFILESIZE=3000
HISTTIMEFORMAT="%F %T"
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
# make less more friendly for non-text input files, see lesspipe(1)
#[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
# 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, unless we know we "want" color)
case "$TERM" in
xterm-color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
# 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 [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\t \u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias cls='clear'
alias ll='ls -l'
alias aptfn='sudo aptitude forget-new'
alias aptn="aptitude search '~N'"
alias gi='bash /home/shirish/git-info.sh'
alias apto='aptitude search ~o'
alias grep='grep --color=auto'
alias aptc="aptitude search '~c'"
alias copy="rsync --progress -ravz"
alias vlc="vlc -vv"
alias tor="/home/shirish/.local/share/torbrowser/tbb/x86_64/tor-browser_en-US/start-tor-browser"
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
#alias grep='grep --color=auto'
#alias fgrep='fgrep --color=auto'
#alias egrep='egrep --color=auto'
fi
# some more ls aliases
#alias la='ls -A'
#alias l='ls -CF'
# 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
# from http://askubuntu.com/questions/16428/showing-a-cowsay-fortune-in-every-new-terminal-session
if [ -x /usr/games/cowsay -a -x /usr/games/fortune ]; then
fortune | cowsay
答え1
シェルには、スクリプトを実行することと、対話型のコマンド ラインを使用することの 2 つの用途があります。
Dash は、スクリプト用の高速で効率的なシェルとして設計されています。インタラクティブな使用に適した機能はほとんどありません。派手なプロンプト、コマンド ライン編集機能、コマンド履歴はありません。
dash をログイン シェルにすることができます。他の Bourne スタイルのシェルと同様に、 が読み込まれます~/.profile
(bash は、bash 固有のものが存在しない限り、これを読み取ります)。dash は、ほとんどの最新の Bourne スタイルのシェルと同様に、対話的に実行されているときに~/.bash_profile
も読み取ります。¹ENV
.bashrc
インタラクティブに使用する場合は、より高性能なシェル (fish、zsh、bash など) を使用してください。他のシェルでも機能するエイリアス定義を除き、ほとんどのコードはbash に固有のものです。
推奨される背景資料:ログイン シェルと非ログイン シェルの違いは何ですか?
¹古い Bourne スタイルのシェルの中には、非対話的に起動したときに ENV を読み取るものもありますが、最近のバージョンではそうしないと思います。Ash は 2001 年にこれをやめました。
答え2
のコマンドの多くは に固有.bashrc
ですbash
。 のようなコマンドHISTCONTROL
は には関係ありませんdash
。コマンド補完についても同様です。ただし、エイリアスは機能します。
のマニュアルページを読みdash
、 で行っている各操作のマニュアルページをチェックして、.bashrc
に適用できるかどうかを確認しますdash
。
dash
あなたが尋ねている本当の質問は、あまり明確ではありません。を としてインストールしたいだけですか/bin/sh
、それとも dash をログイン シェルとしても本当に必要なのですか? 後者の場合、 がchsh
正しい方法です。それ以外の場合は、 をインストールするだけでdash
、インストール時に dash をデフォルトのシステム シェルにするかどうかが尋ねられます (その場合は「はい」を選択します)。回答を変更する場合は、 を実行しますdpkg-reconfigure dash
。
答え3
現在のログイン シェルを変更せずに、自分で簡単に試してみて、動作するかどうかを確認できます。
/etc/profile
およびとは別に~/.profile
、は対話的に起動するときにdash
環境変数によって指定されたファイルを読み取りますENV
。
ENV=~/.bashrc dash
または、コピーして~/.bashrc
不要~/.dashrc
な部分や機能していない部分をコメントアウト/削除してください。すべてが気に入ったら、次の行を追加できます。
ENV=~/.dashrc
に変更し~/.profile
て、デフォルトのシェルを変更します。
からman dash
:
... If the environment variable ENV is set on entry to an interac‐
tive shell, or is set in the .profile of a login shell, the shell next
reads commands from the file named in ENV. Therefore, a user should
place commands that are to be executed only at login time in the
.profile file, and commands that are executed for every interactive
shell inside the ENV file. To set the ENV variable to some file, place
the following line in your .profile of your home directory
ENV=$HOME/.shinit; export ENV
substituting for “.shinit” any filename you wish.