.bash_profile no se actualiza hasta que se abra una nueva ventana de Terminal

2

Estoy intentando crear un comando de Terminal. He creado esto hasta ahora:

cd ~/ && touch .bash_profile && echo "" >> .bash_profile && echo "alias sendtext=\"osascript -e 'on run argv' -e 'tell application \\"Messages\\"' -e 'set myid to get id of first service' -e 'set address to item 1 of argv' -e 'set message to item 2 of argv' -e 'set receiver to buddy address of service id myid' -e 'send message to receiver' -e 'end tell' -e 'end run'\"" >> .bash_profile && echo "alias sendtext-remove=\"cd ~/ && grep -vwE \\"(sendtext|sendtext-remove)\\" .bash_profile > .bash_profile && . .bash_profile\"" >> .bash_profile && . .bash_profile

Crea dos comandos:

  • enviar texto [correo electrónico] [mensaje] (envía un mensaje de texto al correo electrónico)
  • sendtext-remove (elimina las dos líneas del archivo .bash)

El problema es que después de ejecutar sendtext-remove , todavía puedo ejecutar send text . ¿Cómo puedo actualizar el .bash_profile sin abrir una nueva ventana de Terminal?

    
pregunta Andrew Mast 04.03.2016 - 22:48

2 respuestas

2

Eso parece un montón de trabajo para

alias sendtext-remove='unalias sendtext sendtext-remove'

: ¿estás tratando de cubrir tus pistas de alguna manera editando el archivo?

También tenga en cuenta que grep -v foo myfile > myfile truncará "myfile" a cero bytes. Esto se debe a que la redirección ocurre primero , y luego grep tiene un archivo vacío con el que trabajar. Luego, . ~/.bashrc está obteniendo un archivo vacío y no realizará cambios en el shell que se está ejecutando actualmente.

Básicamente, su problema es que no alias los alias en su shell actual.

Iba a escribir algunas funciones para instalar y desinstalar, pero he cambiado de opinión. No creo que debas editar los archivos de puntos de tus usuarios. Si quieren su función de envío de texto, puede compartirla con ellos, y si no la quieren, pueden eliminarla ellos mismos. Sin embargo, lo escribiría como una función, solo para facilitar la lectura

sendtext() {
    osascript -e 'on run argv' \
              -e 'tell application "Messages"' \
              -e 'set myid to get id of first service' \
              -e 'set address to item 1 of argv' \
              -e 'set message to item 2 of argv' \
              -e 'set receiver to buddy address of service id myid' \
              -e 'send message to receiver' \
              -e 'end tell' \
              -e 'end run' \
              "$@"
} 
    
respondido por el glenn jackman 04.03.2016 - 23:22
1

Puede volver a cargar el perfil de bash desde la línea de comandos o el script con el siguiente comando:

source ~/.bash_profile
    
respondido por el Mattia 04.03.2016 - 22:59

Lea otras preguntas en las etiquetas