Sé que esto debe ser algo tonto, pero de alguna manera estoy atascado tratando de crear un acceso directo (alias) para una función de shell.
Aquí está mi exacto .bash_profile:
[[-s "$ HOME / .rvm / scripts / rvm"]] && source "$ HOME / .rvm / scripts / rvm" # Carga RVM en una sesión de shell * como una función *
alias l = "ls -G"
r () {
echo "iron_worker upload $ 1"
echo "iron_worker queue $ 1"
}
export -fr
Entonces agregué mi función r()al final del archivo. Ahora, cuando escribo ren el shell, sigo recibiendo un error:
-bash: r: command not found
He reiniciado el terminal, la ventana de shell y todavía no tengo ningún efecto.
Estoy en Mac OS 10.8.5 si eso importa.
EDITAR.
Después de algunas búsquedas, encontré esta pregunta sugiriendo usar en bash_profilelugar de bashrc, ¡que ahora está funcionando! Pero ... lo que obtengo son los comandos enumerados pero no ejecutados:
Dmitris-MacBook-Pro: ~ dmitrizaitsev $ r carga de iron_worker cola de iron_worker
Esta es la ejecución normal del comando que esperaba:
Dmitris-MacBook-Pro: ~ dmitrizaitsev $ iron_worker upload
Especifique el nombre del paquete de código o la ruta al archivo de trabajo
uso: iron_worker upload CODE_PACKAGE_NAME_OR_PATH_TO_WORKERFILE [OPCIONES]
-n, --name NAME anula el nombre del código
-c CONCURRENCIA, número máximo de trabajadores concurrentes para este paquete de código
--max-concurrencia
-r, --retries NUM_RETRIES número máximo de reintentos automáticos en caso de error de tarea
-d RETRIES_DELAY, retraso entre cada reintento automático
--retry-delay
--worker-config CONFIG_FILE archivo de configuración para trabajador
-h, --host nombre de host HOST, por ejemplo: www.midominio.com
-a, --async no espere la compilación del paquete
--full-remote-build activa la compilación remota completa
--config CONFIG config file
-e, --env entorno ENV
--project-id ID de proyecto PROJECT_ID
Dmitris-MacBook-Pro: ~ dmitrizaitsev $
En cambio, solo recibo el comando y nada más. ¿Alguna idea de lo que está pasando?

~/y el contenido es como en la pregunta. ¿Es eso lo que quieres decir?Respuestas:
Debe usar, dentro del mismo archivo, la línea:
Para comprobar que esto funciona, debe usar un shell diferente que haya comenzado
afterpara obtener su .bashrc, de modo que pueda haber heredado la nueva función. En proyectiles staler, esto no funcionará.Además, inserte esto en su
~/.bash_profile:Si desea ejecutar el programa iron_worker, el cuerpo de la función r debería ser:
Además, le sugiero que proporcione la ruta completa al comando iron_worker (es decir, sustitúyala
iron_workerpor/path/to/iron_worker).fuente
alias l="ls"dentro del mismo archivo tampoco funcionan :(source .bashrc, entonces funciona. Pero no se activa automáticamente en el nuevo shell a menos que lo vuelva a hacer :( ¿Hay alguna forma de obtenerlo automáticamente?Terminal e iTerm abren nuevos shells como shells de inicio de sesión de forma predeterminada, por lo que bash lee
~/.bash_profilepero no~/.bashrc.Tu también puedes:
~/.bash_profilelugar de~/.bashrc.. ~/.bashrca~/.bash_profile./bin/bashen Terminal.He hecho los dos últimos. Por ejemplo, tmux y el modo de shell en Emacs abren nuevos shells de inicio de sesión como shells sin inicio de sesión de forma predeterminada.
~/.bash_profiletodavía se lee cuando ssh a mi computadora.Consulte https://www.gnu.org/s/bash/manual/html_node/Bash-Startup-Files.html para obtener más información.
La
functionpalabra clave en su definición de función es redundante por cierto.function name() { :; }es idéntico aname() { :; }en bash. Lafunctionpalabra clave no está definida por POSIX.fuente