auto_install.sh
takker.icon用Ubuntuで使うsoftwareを自動でインストールするshell script
入れるもの
実装
例外処理を有効にする
code:auto_install.sh
set -eu
catch () {
echo "Some error have occurred. Terminate the installation."
}
trap catch ERR
code:auto_install.sh
if !(type "nvim" > /dev/null 2>&1) \
|| !(type "batcat" > /dev/null 2>&1) \
|| !(type "unzip" > /dev/null 2>&1) \
|| !(type "fish" > /dev/null 2>&1) \
|| !(type "clang" > /dev/null 2>&1) \
|| !(type "xsel" > /dev/null 2>&1); then
echo "Install some apps...";
sudo add-apt-repository ppa:fish-shell/release-3
sudo apt-get update
sudo apt-get install neovim bat unzip fish clang build-essential x11-apps x11-utils x11-xserver-utils dbus-x11 ffmpeg poppler-utils -y
echo "Successfully installed."
fi
if !(type "deno" > /dev/null 2>&1); then
echo "deno is not installed. Install deno..."
echo "Successfully installed deno."
fi
nodeは普通にnpm経由で入れることにする
あ、これやってもroot権限が必要なところにglobalのnode_modulesが入ってしまうことには変わりないのか…… code:auto_install.sh
if !(type "node" > /dev/null 2>&1); then
echo "Node.js is not installed. Install Node.js..."
sudo apt install nodejs
root権限の必要ないdirectoryに移動する
code:auto_install.sh
mkdir -p ~/.npm-global
npm config set prefix '~/.npm-global'
echo "Successfully installed node and npm."
fi
Nodeをinstallするときに勝手についてくるっぽい
code:auto_install.sh
if !(type "yarn" > /dev/null 2>&1); then
echo "yarn is not installed. Install yarn..."
npm install -g yarn
# use yarn V2
yarn set version berry
echo "Successfully installed yarn."
fi
if !(type "cargo" > /dev/null 2>&1); then
echo "Rust compile tools is not installed. Install rustup and cargo..."
echo "Successfully installed rustup."
fi
if !(type "exa" > /dev/null 2>&1); then
echo "exa is not installed. Install exa..."
cargo install exa
echo "Successfully installed exa."
fi
なぜか$XDG_CONFIG_HOME: command not foundが大量に出てくる
幸いterminalは落ちない
どこで発生しているエラーか調べる
もう少し詳しく調べる
16:29:48 ふ~む
trapの設定は関係ない
code:log
start auto install
Checking apps not installed yet...
$XDG_CONFIG_HOME: コマンドが見つかりません
$XDG_CONFIG_HOME: コマンドが見つかりません
$XDG_CONFIG_HOME: コマンドが見つかりません
$XDG_CONFIG_HOME: コマンドが見つかりません
$XDG_CONFIG_HOME: コマンドが見つかりません
$XDG_CONFIG_HOME: コマンドが見つかりません
Checking Deno...
$XDG_CONFIG_HOME: コマンドが見つかりません
Checking nvm...
$XDG_CONFIG_HOME: コマンドが見つかりません
Checking node...
$XDG_CONFIG_HOME: コマンドが見つかりません
Checking yarn...
$XDG_CONFIG_HOME: コマンドが見つかりません
Checking cargo...
$XDG_CONFIG_HOME: コマンドが見つかりません
Checking exa...
$XDG_CONFIG_HOME: コマンドが見つかりません
finish auto install
16:31:52 もしかして、set -uでエラーを厳格にしたせいか? code:sh
$ echo $XDG_CONFIG_HOME
-bash: XDG_CONFIG_HOME: 未割り当ての変数です
削っても同じエラーが出る
だがなぜここから発生するのかが全くわからない
export XDG_CONFIG_HOME="$HOME/.config"にしてもだめだった
わかっていること
XXX: コマンドが見つかりませんはXXXというコマンドが存在しないときに発生するエラー
拡張子は関係ない
.shでも.bashでも同じだった
仮説
sourceでtypeは使えない?
16:54:12 ビンゴ!bash auto_install.shなら起動した!