Hay dos formas de permitirle ejecutar el binario sin especificar su ruta (sin incluir la creación de alias o funciones de shell para ejecutarlo con una ruta absoluta para usted):
- Cópialo en un directorio que esté en tu
$PATH
. - Agregue el directorio donde está a su
$PATH
.
Para copiar el archivo a un directorio en su ruta, por ejemplo /usr/local/bin
(donde debe ir el software administrado localmente), debe tener privilegios de superusuario, lo que generalmente significa usar sudo
:
$ sudo cp -i mybinary /usr/local/bin
Se debe tener cuidado de no sobrescribir ningún archivo existente en el directorio de destino (es por eso que agregué -i
aquí).
Para agregar un directorio a su $PATH
, agrega una línea en tu ~/.bashrc
archivo (si está usando bash
):
PATH="$HOME/bin:$PATH"
... si el binario está en $HOME/bin
.
Esto tiene la ventaja de que no necesita tener privilegios de superusuario ni cambiar/agregar nada en el sistema base de su máquina. Solo necesita mover el binario al bin
directorio de su directorio de inicio.
Nota, cambios a .bashrc
surte efecto cuando el archivo se obtiene la próxima vez, lo que sucede si abre una nueva terminal o cierra la sesión y vuelve a iniciarla, o ejecuta source ~/.bashrc
manualmente.
Debería leer más sobre la variable PATH. Sospecho firmemente que deberías usarlo (o cambiarlo) apropiadamente.
Quiero poder ponerlo en el directorio bin
Supongo que te refieres a /bin/
o /usr/bin/
. No estoy seguro de que sea prudente agregar sus propios programas allí. Quizás sería mejor poner un enlace simbólico dentro de ellos (por ejemplo, usando algo como ln -sv $(realpath foobar.out) /usr/bin/
), si desea absolutamente que su programa aparezca allí (que en mi humilde opinión es probablemente un error, ya que se está equivocando con el administrador de paquetes de su distribución).
Probablemente instalando su programa en /usr/local/bin/
es mucho más sabio (dejar ambos /bin/
y /usr/bin/
intacto, tal como lo proporciona y administra su distribución de Linux). Consulte LSB y lea más sobre el estándar de jerarquía de archivos.
... como comandos de todo el sistema, por ejemplo .... cd
Este es un concepto muy erróneo de su parte (en la variante original de su pregunta, eliminó correctamente cd
luego). cd
no es ni puede ser un ejecutable, es (y tiene que ser) un comando integrado de su shell.
Es posible que desee leer la Programación avanzada de Linux descargable gratuitamente para entender por qué cd
no puede ser un ejecutable (el directorio de trabajo actual es parte del estado de cada proceso, y cada proceso tiene el suyo propio y podría cambiarlo usando chdir(2)...)
install /path/to/oobar.out /usr/local/bin/