title: $PS1
link: http://jj.isgeek.net/2005/05/ps1/
author: Jj
description: 
post_id: 12
date: 2005/05/20 23:50:23
created_gmt: 2005/05/21 04:50:23
comment_status: open
slug: ps1

He estado usando [zsh](http://www.zsh.org/) por un tiempo, y tiene muchas caracterÃ­sticas buenas, pero habÃ­an algunas que no me terminaron de gustar o serÃ¡ que no me acostmbrÃ©. 

No me sentÃ­ cÃ³modo en la manera como funciona el autocompletar, al apretar TAB, automÃ¡ticamente se completa la primera opciÃ³n disponible, y aparece como un pequeÃ±o menÃº abajo para elegir con las flechas la opciÃ³n que quieras.

![Zshell autocompletar](/uploads/captura_20050520-234147.png)

Estoy seguro que se puede cambiar, pero la documentaciÃ³n es muy extensa y no me dÃ­ tiempo de leerla y buscar como hacerlo. Sin embargo la principal razÃ³n que me ha hecho regresar a usar [Bash](http://www.gnu.org/software/bash/bash.html) es el BashScripting, estoy muy acostumbrado a ejecutar comandos de bash en la lÃ­nea de comando, y desde zsh simplemente no funcionaban. PensÃ© que no mse serÃ­a muy Ãºtil aprender ZshellScript ya que es seguro que hay Bash en todas las maquinas que encuentre, asi que seguirÃ© jugando con Bash.

Lo que si me gusto de usar zsh, fue que en el archivo de demo que encontrÃ© usaba un prompt que me gustÃ³ mucho, con la carpeta activa en el lado derecho y el usuario y hostname a la izquierda. Otra cosa que no se como hacer en Bash es hacer que el cuando tenga una lÃ­nea muy larga que continue en la siguiente lÃ­nea, mientras que con Bash continua en la misma liÃ­nea borrando el inicio, y luego todo se descuadra

IntentÃ© emular ese prompt en Bash, y lleguÃ© a algo muy parecido, sÃ³lo que el nombre de usuario y hostname no los puse por que se que este $PS1 es de mi usuario y como no tengo demasiadas maquinas, no creo que me pierda ;) .

![PS1](/uploads/captura_20050520-235245.png)
    
    
    
    
    
    
    #~/.bashrc
    
    
    
    
    eval `dircolors -b /etc/DIR_COLORS`
    
    
    
    
    alias mv="mv -i"
    
    
    
    
    alias ls="ls --color=auto -p"
    
    
    
    
    export MANPAGER=most
    
    
    
    
    export PAGER=less
    
    
    
    
    export EDITOR=vim
    
    
    
    
    function prompt_command {
    
    
    
    
    	if [ $PWD = $HOME ]; then
    
    
    
    
    		P="~"
    
    
    
    
    		W=$(( $(tput cols) - 4))
    
    
    
    
    	else
    
    
    
    
    		P=$( pwd | awk -F"/" '{ print $NF}')
    
    
    
    
    		W=$(( $(tput cols)  - $(echo $P | wc  | tr -s ' ' | cut -d' ' -f4) - 2))
    
    
    
    
    	fi
    
    
    
    
    	tput sc
    
    
    
    
    	tput cuf $W
    
    
    
    
    	echo -ne $(tput bold)$(tput setaf 7)"["$(tput sgr0)$(tput setaf 2)"$P"$(tput bold)$(tput setaf 7)"]" $(tput sgr0)
    
    
    
    
    	tput cuu1
    
    
    
    
    	tput rc
    
    
    
    
    }
    
    
    
    
    PROMPT_COMMAND=prompt_command
    
    
    
    
    PS1=$(tput bold)$( tput setaf 3)"> "$(tput sgr0)
    
    
    
    
    

Eso es lo que tengo por ahora, si alguien tiene alguna mejora, o me puede contar otra forma de hacerlo serÃ­a chevere :P, porque estÃ¡ un poco lento