in internal/shells/bash.go [15:36]
func appendToBashHistory(command string, filePath string) error {
file, err := os.OpenFile(filePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0600)
if err != nil {
return fmt.Errorf("failed to open file: %w", err)
}
defer file.Close()
// Lock the file to prevent other processes from writing to it concurrently
// and then unlock after we're done writing to it.
if err := unix.Flock(int(file.Fd()), unix.LOCK_EX); err != nil {
return fmt.Errorf("failed to lock file: %w", err)
}
defer unix.Flock(int(file.Fd()), unix.LOCK_UN)
// Append the command and a newline to the file
_, err = file.WriteString(command + "\n")
if err != nil {
return fmt.Errorf("failed to write to file: %w", err)
}
return nil
}