GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Hubo un error al crear el proceso secundario para esta terminal?

Estoy usando Ubuntu desde la versión 10.04 y lo encontré más amigable en comparación con Windows. En este momento estoy usando 'Precise 12.04'. Creé muchos lanzadores personalizados para bash scripts y nunca tuve ningún problema hasta ayer.

He instalado un paquete de software que tiene varios ejecutables. El ejecutable principal abaqus se encuentra en optsoftwaresname y es un enlace simbólico al ejecutable abq610i en /opt/softwaresname/executables/ .

El exe principal abaqus requiere algunos argumentos de línea de comandos. Uso el argumento cae , (es decir, abaqus cae ) pero con otro comando para representar los gráficos en un mejor modo, por lo que la llamada final es:
XLIB_SKIP_ARGB_VISUALS=1 abaqus cae

Creé un alias para este comando largo en .bash_rc archivo como:

alias abaquscae="XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"

Todo funcionó perfectamente bien, ya que el alias ejecuta el software. Siendo un campeón perezoso, pensé en crear un lanzador de muelle de El Cairo para esto. Así que ingresé abaquscae en el cuadro "comando para iniciar al hacer clic" y marcó "Ejecutar en una terminal". Sin embargo, para mi consternación, al hacer clic en el lanzador me dio un error::

There was an error creating the child process for this terminal
Failed to execute child process "abaquscae" (No such file or directory)

En consecuencia, escribí un pequeño archivo de script bash "abaquscae.sh":

#!/bin/sh
"XLIB_SKIP_ARGB_VISUALS=1 abaqus cae"

y lo guardé, lo hice ejecutable y al ejecutarlo en bash shell, nuevamente obtuve el error similar, es decir:

./abaquscae.sh: 2: ./abaquscae.sh: XLIB_SKIP_ARGB_VISUALS=1 abaqus cae: not found 

Ahora estoy totalmente perdido, he intentado muchos trucos, por ejemplo,
1- eliminar las comas en el script bash,
2- convertirlo en dos2unix ,
3- utilizando la ruta completa al ejecutable
pero este script no se ejecuta a través de bash terminal.

PROBLEMA:

El comando (así como su alias) funcionan bien en la terminal bash, sin embargo, cuando se ejecutan a través de algún otro canal (por ejemplo, secuencias de comandos/lanzadores), la terminal lamentablemente no los reconoce 🙁 ..

Si algún experto tiene consejos/información sobre cómo resolver este problema, por favor compártalo. Estaré muy agradecido.

Respuesta aceptada:

Creo que el guión debería ser así:

#!/bin/bash
XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae

También puede crear el lanzador usando el siguiente comando:

bash -c 'XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae'

Establecer variables de entorno antes del nombre del archivo ejecutable en una línea de comandos es una característica de los shells CLI (interfaz de línea de comandos). Si pones VARIABLE=value /path/to/executable en un lanzador, el programa que lee el lanzador (y efectivamente lanza el ejecutable) intentará encontrar un archivo llamado "VARIABLE=valor" y, por supuesto, fallará.

Relacionado:¿los scripts de inicio para Unity Desktop?

Ese comando inicia bash , el shell de usuario predeterminado en Ubuntu, y dígale que se ejecute (el -c opción) la cadena "XLIB_SKIP_ARGB_VISUALS=1 /opt/softwaresname/abaqus cae", por lo que se interpretará como si lo escribiera en la CLI.


Ubuntu
  1. ¿Cómo encontrar el ID de proceso (pid) de un programa de terminal en ejecución?

  2. ¿Diferencia entre los símbolos '&&' y ';' en una terminal Bash estándar?

  3. Archivo .desktop. ¿Hubo un error al iniciar la aplicación?

  4. No se puede obtener el límite de memoria de bytes privados para el proceso W3WP.

  5. ¿Hay alguna forma de cambiar las variables de entorno de otro proceso en Unix?

¿Comprobar el proceso si se está ejecutando lo mismo?

¿Están definidas en algún lugar las secuencias de escape de color terminal para Bash?

¿Acabaron de eliminar la configuración de fondo para la terminal?

¿Cliente Torrent para la línea de comandos?

El Bash FOR Loop explicado y simplificado

Solución para el error de arranque de Ubuntu "No existe tal partición"