Bash
+
#
1:
$ sudo echo "export PATH=\$PATH:~/\"My Path\"" >> ~/.bash_profile
Post: Nekoformi
Date: 2024/02
Bashには特定の状況で実行されるファイルが存在します。大抵はユーザー単位で用意されています。
場所 | ファイル名 | 機能 |
---|---|---|
~/ | .bash_profile | 実行するコマンドを記述します:ログイン時に。 |
~/ | .bash_logout | 実行するコマンドを記述します:ログアウト時に。 |
~/ | .bashrc | 実行するコマンドを記述します:Bashの起動時に。 |
環境変数を設定する際に便利なファイルです。例えば、echo
コマンドと追記リダイレクション(>>
)を用いて~/My Path
にPATHを通す操作をファイルに追記してみましょう。
1:
$ sudo echo "export PATH=\$PATH:~/\"My Path\"" >> ~/.bash_profile
export
コマンドで環境変数に設定します。変数名=内容
で定義して$変数名
で呼出しますが、PATHは既に内容が定義されているため、上書きではなく書き足す操作としてPATH=$PATH:内容
を定義します。これは、PATHが複数の内容をコロン(:
)で区切るためです。
)が含まれる場合は空白をエスケープ(\
)するか、引用符("
)で囲む必要があります。また、変数として機能しないドル記号や引用符の内部で引用符を記述する場合も同様にエスケープ(\$
や\"
)する必要があります。当然ながら他のファイルを呼び出すことも可能なので、可読性や保守性を高めるために個別のファイルを用意しても構いません。
1:
$ sudo echo "bash ~/\"My Command\"/\"Run at Login.sh\"" >> ~/.bash_profile
1: 2: 3:
#!/bin/bash
export PATH=$PATH:~/"My Path"
#!/bin/bash
)を書くことで機能を明示します。私はコマンドやアクティビティーの履歴を残したくないので、ここで削除を行います。ファイルを削除する場合はrm
コマンドを、ファイルの中身を削除する場合は/dev/null
(虚無)を対象にリダイレクション(>
)します。
1:
$ sudo echo "bash ~/\"My Command\"/\"Run at Logout.sh\"" >> ~/.bash_logout
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
#!/bin/bash
# Disable Some History (only KDE)
sudo cat /dev/null > ~/.local/share/recently-used.xbel
sudo rm -f ~/.local/share/user-places.xbel.bak
sudo rm -f ~/.local/share/user-places.xbel.tbcache
sudo rm -rf ~/.local/share/RecentDocuments/*
# Disable Command History
history -c
cat /dev/null > ~/.bash_history
# Disable Log
sudo rm -rf /var/log/*
エイリアス(コマンドの略称)を設定する際に便利なファイルです。例えば、長いコマンドを頻繁に入力する場合はalias 略称="コマンド"
を設定することで略称
から元のコマンド
を実行できます。他にも、プロンプト(コマンドの入力箇所に表示される情報)の変更やターミナルの改造が行えます。
1:
$ sudo echo -e "\nsource ~/\"My Command\"/\"Run at Bash Start.sh\"" >> ~/.bashrc
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
#!/bin/bash
alias ll="ls -lhvA --time-style=\"+%Y/%m/%d %H:%M:%S\""
alias shf="sudo shred -n 1 -uz $1"
alias shd="find ./ -name '*' -type f -print0 | xargs -0 -i -P 1 sudo shred -n 1 -uz {}"
alias rmf="sudo rm -f $1"
alias rmd="sudo rm -rf ./*"
function cleanTerminal() {
history -c
cat /dev/null > ~/.bash_history
clear
unset blankLine
echo -e "\e[01;31mThe beginning of something.\e[00;00m\n"
}
alias clean="cleanTerminal"
function addBlankLine() {
if [[ -z "$blankLine" ]]; then
blankLine=true
else
printf "\n"
fi
}
PS1="\[\e]0\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;33m\]\u@\h\[\033[01;00m\]: \[\033[01;32m\]\w\[\033[00;00m\] \$ "
PROMPT_COMMAND="addBlankLine"
clean
.bashrc
には何かしらのコードが既に記述されている場合が多く、既存の内容と区別するために\n
で空行を追加します。echo
コマンドでは-e
オプションを付与することでエスケープシーケンス(改行を表す\n
等)を解釈します。.bashrc
以外のファイルにエイリアスを記述する場合は、bash
コマンドではなくsource
コマンドを使用して実行元の環境(.bashrc
、つまりターミナル)にコマンドを展開する必要があります。\e[XX;XXm文字列\e[XX;XXm
はANSIエスケープシーケンス、\[文字列\]
は制御シーケンスを記述するための特殊文字です。PS1
という変数に文字列を記述することで、プロンプトを変更します。PROMPT_COMMAND
という変数にコマンドや関数を記述することで、コマンドの処理が終了した後(=プロンプトが表示される前)に内容を自動で実行します。