-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Expand file tree
/
Copy pathinit-alpine.sh
More file actions
125 lines (92 loc) · 2.88 KB
/
init-alpine.sh
File metadata and controls
125 lines (92 loc) · 2.88 KB
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/share/bin:/usr/share/sbin:/usr/local/bin:/usr/local/sbin:/system/bin:/system/xbin:$PREFIX/local/bin
export PS1="\[\e[38;5;46m\]\u\[\033[39m\]@localhost \[\033[39m\]\w \[\033[0m\]\\$ "
export HOME=/home
export TERM=xterm-256color
required_packages="bash command-not-found"
missing_packages=""
for pkg in $required_packages; do
if ! apk info -e "$pkg" >/dev/null 2>&1; then
missing_packages="$missing_packages $pkg"
fi
done
if [ -n "$missing_packages" ]; then
echo -e "\e[34;1m[*] \e[0mInstalling important packages\e[0m"
apk update && apk upgrade
apk add $missing_packages
if [ $? -eq 0 ]; then
echo -e "\e[32;1m[+] \e[0mSuccessfully installed\e[0m"
fi
echo -e "\e[34m[*] \e[0mUse \e[32mapk\e[0m to install new packages\e[0m"
fi
if [ ! -f /linkerconfig/ld.config.txt ]; then
mkdir -p /linkerconfig
touch /linkerconfig/ld.config.txt
fi
if [ "$1" = "--installing" ]; then
mkdir -p "$PREFIX/.configured"
echo "Installation completed."
exit 0
fi
if [ "$#" -eq 0 ]; then
echo "$$" > "$PREFIX/pid"
chmod +x "$PREFIX/axs"
if [ ! -e "$PREFIX/alpine/etc/acode_motd" ]; then
cat <<EOF > "$PREFIX/alpine/etc/acode_motd"
Welcome to Alpine Linux in Acode!
Working with packages:
- Search: apk search <query>
- Install: apk add <package>
- Uninstall: apk del <package>
- Upgrade: apk update && apk upgrade
EOF
fi
# Create initrc if it doesn't exist
#initrc runs in bash so we can use bash features
if [ ! -e "$PREFIX/alpine/initrc" ]; then
cat <<'EOF' > "$PREFIX/alpine/initrc"
# Source rc files if they exist
if [ -f "/etc/profile" ]; then
source "/etc/profile"
fi
if [ -f "$HOME/.bashrc" ]; then
source "$HOME/.bashrc"
fi
if [ -f /etc/bash/bashrc ]; then
source /etc/bash/bashrc
fi
# Environment setup
export PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/share/bin:/usr/share/sbin:/usr/local/bin:/usr/local/sbin
export HOME=/home
export TERM=xterm-256color
SHELL=/bin/bash
export PIP_BREAK_SYSTEM_PACKAGES=1
# Display MOTD if available
if [ -s /etc/acode_motd ]; then
cat /etc/acode_motd
fi
# Command-not-found handler
command_not_found_handle() {
cmd="$1"
pkg=""
green="\e[1;32m"
reset="\e[0m"
pkg=$(apk search -x "cmd:$cmd" 2>/dev/null | awk -F'-[0-9]' '{print $1}' | head -n 1)
if [ -n "$pkg" ]; then
echo -e "The program '$cmd' is not installed.\nInstall it by executing:\n ${green}apk add $pkg${reset}" >&2
else
echo "The program '$cmd' is not installed and no package provides it." >&2
fi
return 127
}
EOF
fi
# Add PS1 only if not already present
if ! grep -q 'PS1=' "$PREFIX/alpine/initrc"; then
echo 'PS1="\033[1;32m\u\033[0m@localhost \w \$ "' >> "$PREFIX/alpine/initrc"
fi
chmod +x "$PREFIX/alpine/initrc"
#actual souce
"$PREFIX/axs" -c "bash --rcfile /initrc -i"
else
exec "$@"
fi