Use assign but keep in mind that you can also create a raster stack or brick by passing a vector of valid rasters to the function. The original raster names are kept in the raster object. However, it is required that all of your rasters share common resolution, dimensions (row/col), extent and origin coordinates. If you want to predict a spatial model you would use this input and call predict. There is a wrapper in the raster package that will predict to a raster stack/brick object and stay memory safe. I made some suggestions to your code.
# if you set the working directory you do not need to return the full path in list.files.
setwd("C:/Michelle/Michelle/R/Variables")
# Use pattern arg to return a wildcard for ovr
hab = list.files(getwd(), pattern="ovr$", full.names=FALSE)
# Create raster stack and display associated names
r <- stack(hab)
names(r)
# Here is how you return just the files names
hab.names <- c( unlist( lapply(strsplit(hab,"[.]"), FUN=function(x) { x[1] })))
# For loop assigning files names to individual raster objects
for(j in 1:length(hab) ) { assign(hab.names[j], raster(hab[j]) }