mirror of
https://github.com/robbyrussell/oh-my-zsh.git
synced 2026-09-21 18:46:06 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed01423b18 | ||
|
|
bc6faea85b | ||
|
|
ce6ebd3d8d | ||
|
|
6749d0825b | ||
|
|
296fbb8b69 |
@@ -370,6 +370,7 @@ setup_zshrc() {
|
||||
# Ask user for confirmation before backing up and overwriting
|
||||
echo "${FMT_YELLOW}Found ${zdot}/.zshrc."
|
||||
echo "The existing .zshrc will be backed up to .zshrc.pre-oh-my-zsh if overwritten."
|
||||
echo "Your command history will be backed up too, since replacing .zshrc drops any SAVEHIST you had set."
|
||||
echo "Make sure your .zshrc contains the following minimal configuration if you choose not to overwrite it:${FMT_RESET}"
|
||||
echo "----------------------------------------"
|
||||
cat "$ZSH/templates/minimal.zshrc"
|
||||
@@ -398,6 +399,44 @@ setup_zshrc() {
|
||||
fi
|
||||
echo "${FMT_GREEN}Backing up to ${OLD_ZSHRC}${FMT_RESET}"
|
||||
mv "$zdot/.zshrc" "$OLD_ZSHRC"
|
||||
|
||||
# The .zshrc we just moved aside is where the user's SAVEHIST lived. Without
|
||||
# it zsh trims $HISTFILE the next time a shell exits, so copy the history
|
||||
# while it is still intact. $HISTFILE is a zsh variable we cannot read from
|
||||
# here, so cover both locations it is commonly given: /etc/zshrc on macOS
|
||||
# sets ${ZDOTDIR:-$HOME}/.zsh_history, and lib/history.zsh falls back to
|
||||
# $HOME/.zsh_history.
|
||||
hist_backed_up=""
|
||||
for hist in "$zdot/.zsh_history" "$HOME/.zsh_history"; do
|
||||
if [ ! -f "$hist" ]; then
|
||||
continue
|
||||
fi
|
||||
case " $hist_backed_up " in
|
||||
*" $hist "*) continue ;;
|
||||
esac
|
||||
hist_backup_base="${hist}.pre-oh-my-zsh"
|
||||
hist_backup="$hist_backup_base"
|
||||
if [ -e "$hist_backup" ]; then
|
||||
hist_backup_ts="$(date +%Y-%m-%d_%H-%M-%S)"
|
||||
hist_backup_i=0
|
||||
while [ -e "$hist_backup" ]; do
|
||||
hist_backup_i=$((hist_backup_i + 1))
|
||||
hist_backup="${hist_backup_base}-${hist_backup_ts}-${hist_backup_i}"
|
||||
done
|
||||
fi
|
||||
if cp -p "$hist" "$hist_backup"; then
|
||||
echo "${FMT_GREEN}Backing up your command history to ${hist_backup}${FMT_RESET}"
|
||||
hist_backed_up="$hist_backed_up $hist"
|
||||
else
|
||||
# a half-written file would look like a usable backup
|
||||
rm -f "$hist_backup"
|
||||
fmt_error "could not back up $hist"
|
||||
if ! mv "$OLD_ZSHRC" "$zdot/.zshrc"; then
|
||||
fmt_error "could not restore $zdot/.zshrc from backup"
|
||||
fi
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
echo "${FMT_GREEN}Using the Oh My Zsh template file and adding it to $zdot/.zshrc.${FMT_RESET}"
|
||||
|
||||
Reference in New Issue
Block a user