La réponse simple à la question de pourquoi les deux morceaux de code donnent des résultats différents est qu'ils sont écrits pour deux langages différents. Le premier est bash qui était l'interpréteur de commandes par défaut sur OSX 10.3 jusqu'à 10.14. Le deuxième est zsh qui est l'interpréteur de commandes par défaut actuel. (De plus, le premier n'est pas du code correct dans n'importe quel langage il manque PS1 et il ne devrait pas y avoir d'espaces autour de =)
zsh ne lira pas .bash_profile ou .profile mais juste .zshrc
zsh est très bien documenté sur https://zsh.sourceforge.io/ Le prompt est documenté ici
Le code donné pour le second n'est presque certainement pas ce que vous voulez car la variable DATE est définie lorsque l'interpréteur de commandes démarre et vous voulez probablement la date et l'heure lorsque le prompt est exécuté.
Comme avertissement, je n'aime pas la plupart des interpréteurs de commandes UNIX car la syntaxe m'est obscure car ils ont été conçus pour permettre à l'utilisateur de taper le moins de caractères possible donc je ne les comprends pas entièrement donc j'utiliserais des interpréteurs de commandes non POSIX comme fish qui vous permet de définir le prompt à partir d'une interface web ou de fonctions compréhensibles.
Des exemples simples du prompt se trouvent dans l' introduction à zsh Je commencerais par là et je monterais en compétence. Il y a aussi un site web de génération de prompts zsh qui vous permettra de jouer avec ce qui peut être fait
Cependant, aucun des deux ne parle de couleurs. Pour cela, consultez la référence de zsh Cela montre que dans le prompt %F{white}
rend tout ce qui suit avoir une couleur de premier plan blanche. Donc votre exemple afficherait blanc puis vert puis rouge puis blanc puis jaune puis réinitialiser pour supprimer toutes les couleurs.