Así que he intentado experimentar y crear un alias
in .bashrc
. Sin embargo, cuando pruebo el comando obtengo:
[rkahil@netmon3 ~]$ menu
-bash: menu: command not found
Esto es lo que tengo en el .bashrc
archivo:
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
alias menu='./menuScript.sh'
alias vi='vim'
Lo curioso es que cuando creé el alias vi
, funcionó. Pero el menú no. He buscado publicaciones anteriores en UnixStackExchange e intenté seguir otras publicaciones, pero fue en vano. ¿Alguien más tiene alguna sugerencia?
./menuScript.sh: command not found
No such file or directory
, que todavía no es lo mismo que el error del OP. Sin embargo, el punto sigue en pie: sería mejor con una ruta absoluta a menos que el alias siempre se vaya a usar desde el directorio dondemenuScript.sh
reside.Respuestas:
Deberías intentarlo con
alias menu='bash ./menuScript.sh'
. Actualmente no estoy en una máquina Linux, así que no puedo probarlo yo mismo, pero debería funcionar. Cuando llama al alias, no sabe qué hacer con la ruta, por lo que debe incluir elbash
al principio.Y restablecer el terminal ayuda después de realizar el cambio.
fuente
menuScript.sh
no haya sidochmod
editado al ejecutable, en cuyo caso el mensaje de error habría sido "Permiso denegado". Sospecho que forzar una nueva.bashrc
lectura del archivo es la respuesta. ... ... ... ... ... ... ... PS El shell sabe qué hacer con la ruta de la misma manera que si el usuario escribe./menuScript.sh
, intentando ejecutar el archivo.Cuando tu lo hagas
creas un alias que dice "ese archivo" pero no dice qué hacer con él.
Sin embargo, si lo haces
o
Estás diciendo ejecutar ese archivo.
fuente
¿Recordó buscar su archivo ~ / .bashrc después de hacer los cambios? Porque los cambios surten efecto en su archivo .bashrc después de reiniciar su computadora o simplemente obtener el archivo.
fuente
.bashrc
, haz lo siguiente ...". Por otro lado, las preguntas aclaratorias (por ejemplo, "¿Se olvidó de ...?") Parecen más adecuadas para comentarios. No llevaría mucho tiempo reformular para hacer que esta publicación parezca mucho más adecuada para una respuesta.source ~/.bashrc
o. ~/.bashrc
, puede abrir otro shell también. Es tan simple como eso. No se requiere reiniciar.La razón por la que funcionó
vim
es porque ese es un programa que ya se puede llamar sin una ruta directa. No tiene que decir explícitamente "Quiero que esto se ejecute como un programa" porquevim
ya es uno. Está codificado en el sistema operativo que cuando recibe el comandovim
, vaya y ejecute el archivo/usr/bin/vi
o donde sea que esté el programa real.fuente
vim
disponible en el$PATH
que puede ser un ejecutable binario, un script ejecutable o incluso un enlace simbólico a otro programa. Si elimina la entradavim
, dejará de estar disponible para los usuarios.ifvi
que vive en mi$HOME/bin
(que resulta estar en mi$PATH
). Solo lo uso exactamente de la misma manera que podría ejecutar un binario instalado en el sistema. Realmente no importa que sea un programa personalizado.Hay dos problemas con el alias
Requiere que estés en un directorio particular cuando invocas el alias. Si está en un directorio donde
menuScript.sh
no existe, el alias no se ejecutará.Sería mejor si especificara la ruta absoluta completa al
menuScript.sh
script al definir el alias, por ejemploo similar.
Como ya han dicho otros, otra razón por la cual el alias puede fallar es que el script no es ejecutable o que tiene una línea no válida
#!
. Asegúrese de que el script sea ejecutable cony que la primera línea del guión es
o cualquiera que sea la ruta
bash
(o cualquier shell para el que esté escrito el script) en su sistema.fuente