Como nuevo "superusuario" de Linux que intenta migrar desde Windows 7, me he resistido a hacer preguntas básicas que pueden responderse mediante una búsqueda, pero estoy estancado en esto.
Cuando creo un archivo ejecutable desde C con gcc en la terminal de Linux, llamo y digo hello.exe
que se le da X
permiso. Luego desde la terminal puedo ejecutar ./hello.exe
sin problema.
Pero cuando intento ejecutarlo desde Caja, simplemente muestra sus componentes como un archivo de texto. Sin embargo, puedo seleccionar "Ejecutar como administrador", pero luego tengo que ingresar mi contraseña de inicio de sesión.
Esto es independiente de cuál de estas dos configuraciones esté habilitada:
- Ejecute archivos de texto ejecutables cuando se abran.
- Ver archivos de texto ejecutables cuando se abren.
Sin embargo, lo dejo como segunda configuración; de lo contrario, me preguntan qué quiero hacer cada vez que veo o edito un archivo de texto.
Intenté iniciar Caja desde la terminal con sudo caja
(necesita contraseña) pero Caja no ejecuta el ejecutable. en absolutoporque la opción Ejecutar ya no está.
¿Cómo puedo ejecutar un ejecutable desde Caja directamente: con doble clic?
Editar: ¿Puedes ejecutar un ejecutable desdecualquieradministrador de archivos con un simple doble clic?
Edición 2: ahora ejecuta Mint Cinnamon con el administrador de archivos Nemo, pero la pregunta es básicamente la misma. ¿Me falta alguna configuración que permita ejecutar un ejecutable directamente?
Edición 3:
Durante mi investigación encontré
GNOME está eliminando la capacidad de iniciar aplicaciones binarias desde Nautilus:
"O, para decirlo de otra manera, no podrás hacer doble clic en programas, scripts o aplicaciones para iniciarlos usando Nautilus". (mayo 2018)
Y como sospecho que los autores del administrador de archivos los desarrollan como derivados de código fuente abierto (o quizás usan componentes comunes del sistema), quizás ninguno de ellos lo haga ahora.
También encontré esta página de Wikipedia.Comparación de administradores de archivos.Tiene varias mesas. el llamadoCaracterísticas del archivotiene la última columna como "Ejecutar archivos ejecutables", así que probé varios de esos administradores de archivos.
- Ningunode ellos ejecutarían un archivo ejecutable que he compilado (y algunos de ellos ni siquiera permitirán un fácil acceso a mi unidad de trabajo, que nunca es la unidad del sistema).
Pero de todos modos, he descubierto una solución fácil por ahora, que es que mi editor de texto favorito, Geany, ejecutará un ejecutable del archivo fuente actual, si existe, con un solo clic o presionando la tecla F5, sin convertirlo en un proyecto. .
Respuesta1
Sí, puedes ejecutar un ejecutable desde un administrador de archivos como Caja.
Supongamos que tiene un archivo hello.c
en el directorio de inicio /home/User
que contiene un programa simple de "hola, mundo" sin GUI, como por ejemplo:
#include <stdio.h>
int main()
{
printf("hello, world\n");
}
y el programa se compila ejecutándolo gcc -o hello hello.c
para generar un archivo ejecutable hello
.
Para iniciar hello
desde Caja directamente, puede proporcionar un iniciador que iniciará una terminal y ejecutará el ejecutable en ella, o puede proporcionarle al ejecutable una GUI simple.
Si planea utilizar un iniciador, antes de hacer cualquier otra cosa (a menos que ya lo haya hecho anteriormente), sería mejor abrir una terminal, ir a Preferencias, agregar un nuevo perfil llamado, por ejemplo, "HoldOpen" y configurar " Cuando el comando sale" en la pestaña "Comando" de ese perfil para "Mantener la terminal abierta". De lo contrario, la terminal se abrirá, ejecutará el programa y se cerrará antes de que pueda ver los resultados al iniciar desde un iniciador.
Luego crea un lanzador para el hello
programa. Un iniciador es sólo un archivo de texto con una .desktop
extensión; conceptualmente, es algo así como un acceso directo de Windows. La .desktop
extensión no se muestra cuando el archivo aparece en Caja, pero sí es visible en un listado de directorio en una terminal. Un lanzador simple para este propósito que debe guardarse como hello.desktop
está:
[Desktop Entry]
Version=1.0
Type=Application
Name=hello
Comment=
Exec=mate-terminal --profile=HoldOpen -e "/home/User/hello"
Icon=
Path=
Terminal=false
StartupNotify=false
Un iniciador se puede escribir a mano o (como el anterior) generarse haciendo clic derecho en el escritorio, seleccionando "Crear iniciador..." y completando al menos los cuadros "Nombre" y "Comando" (los este último correspondiente a la tecla "Exec").
Al hacer doble clic en el archivo del iniciador en Caja, debería iniciarse hello
en su propia terminal y mostrar su salida allí.
Tenga en cuenta que la clave "Terminal" está configurada en "falso" porque en realidad es el terminal mate el que se está ejecutando, y hello
se ejecuta en el terminal mate.
También tenga en cuenta que si usa gnome-terminal en lugar de mate-terminal, es posible que necesite agregar un par de nuevas líneas antes de "hola, mundo" para poder ver el resultado en la terminal.
Para obtener más información sobre lanzadores, consulte Freedesktop.orgEspecificación de entrada de escritorio.
Una alternativa que permite ejecutar el programa en Caja directamente haciendo doble clic sin necesidad de un lanzador es utilizar la aplicación Zenity para generar cuadros de diálogo GUI según sea necesario, proporcionando así al programa una GUI sencilla. Debería poder instalar Zenity ejecutando sudo apt-get install zenity
. Luego, puede reemplazar stdio la declaración printf en el programa hello.c con stdlib y una llamada al sistema para mostrar un cuadro de diálogo:
#include <stdlib.h>
int main()
{
system("zenity --info --title='Hello' --text='hello, world'");
}
Consulte man zenity
para obtener más información sobre la aplicación Zenity.