Páginas (2):    1 2
Shell   25-02-2021, 01:34
#11
(24-02-2021, 22:44)jguardon escribió: Eso plantea el problema de que si distribuyes tu aplicación, no vas a saber qué shell tienen los diferentes usuarios. Entonces tu aplicación podría fallar si especificas un shell que no exista en esa máquina.

Se me ocurre que mediante alguna variable de entorno se puede averiguar y actuar en consecuencia, escogiendo entre varias opciones en el código. 

Shell de Gambas ejecuta uno por defecto: /bin/sh

Que es un enlace a "/bin/dash"

Eso esta diciendo que dash no soporta la instrucción de arriba.  Ahora bien. Podemos averiguar como tu dices el shell que esta usando
el usuario, pero eso no quiere decir que la instrucción vaya a funcionar o no con el shell activo del usuario.

Podemos averiguar que "shells" tiene instalada la máquina con:

Código:
cat /etc/shells

Eso devuelve en este equipo lo siguiente:
Cita:# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux

Y si se encuentra el que queremos, supongo que podremos seleccionarlo. Angel

¿ Qué opinas ?.

Fuente de la información:

Parte II - Shells disponibles en Linux

Saludos
Última modificación: 25-02-2021, 01:36 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shell   25-02-2021, 13:31
#12
Desisto a pegar un código nuevo si el editor se lo carga... Sad

Pruebo otra vez. He activado en las preferencias del editor de Gambas que al formatear elimine los espacios vacíos.
Voy a pegar una vez el código.

Código:
Public Sub Main()

  Dim ashelldisponibles As String[]
  Dim contenidoarchivo As String
  Dim ruta As String = "/etc/shells"
  Dim orden As String = " which mam{e,e32,e64} "
  Dim ashelladecuados As String[]

  contenidoarchivo = File.Load(ruta)

  'Convertimos cada línea de contenidoarchivo a un array con split, delimtando con final de línea, un caracter de escape que no existe y eliminamos los espacios vacíos
  'Solo nos interesa obtener los elemementos del segundo indice hasta el último indice del array. Usamos la orden Extract

  ashelldisponibles = Split(contenidoarchivo, gb.NewLine, "'", True).Extract(1, -1)
  ashelladecuados = OrdenesConSalida(orden, ashelldisponibles)

End

Public Function OrdenesConSalida(orden As String, adisponibles As String[]) As String[]

  Dim i As Integer
  Dim salida As String
  Dim posibilidades As New String[]

  For i = 0 To adisponibles.Max
    'Asignamos cada uno de los disponibles
    System.Shell = adisponibles
[i]    Shell adisponibles[i] & orden To salida
    If Not IsNull(salida) Then
      Print "La orden" & orden & "funcionará con " & adisponibles
[i]      posibilidades.Add(adisponibles[i])
    Endif
  Next
  Return posibilidades

End
 
A tomar por saco el código con las cursivas..[/i][/i][/i][/i]Cry
Última modificación: 25-02-2021, 14:25 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shell   25-02-2021, 14:32
#13
Probemos una cosa graciosa..

Código:
Public Sub Main()

  Dim ashelldisponibles As String[]
  Dim contenidoarchivo As String
  Dim ruta As String = "/etc/shells"
  Dim orden As String = " which mam{e,e32,e64} "
  Dim ashelladecuados As String[]

  contenidoarchivo = File.Load(ruta)

  'Convertimos cada línea de contenidoarchivo a un array con split, delimitando con final de línea, un caracter de escape que no existe y eliminamos los espacios vacíos
  'Solo nos interesa obtener los elemementos del segundo indice hasta el último indice del array. Usamos la orden Extract

  ashelldisponibles = Split(contenidoarchivo, gb.NewLine, "'", True).Extract(1, -1)
  ashelladecuados = OrdenesConSalida(orden, ashelldisponibles)

End

Public Function OrdenesConSalida(orden As String, adisponibles As String[]) As String[]

  Dim j As Integer
  Dim salida As String
  Dim posibilidades As New String[]

  For j = 0 To adisponibles.Max
    'Asignamos cada uno de los disponibles
    System.Shell = adisponibles[j]
    Shell adisponibles[j] & orden To salida
    If Not IsNull(salida) Then
      Print "La orden" & orden & "funcionará con " & adisponibles[j]
      posibilidades.Add(adisponibles[j])
    Endif
  Next
  Return posibilidades

End

ostias que no le gusta al editor de la comunidad que tenga que "i" entre corchetes!!!..madre mía!.
Fijaros que he cambiado la i por la j y ya no lo hace!. Lo interpreta como etiqueta para cursivas.

Por los derechos de la variable i en los arrays!.  

Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
jguardon   26-02-2021, 21:58
#14
Pues no sé cómo lo haces, pero a mi me sale bien. Desde donde copias el código? desde el IDE? Quizás la razón sea que lo pegas en el editor del foro de texto enriquecido, yo lo hago pulsando el botón 'Fuente HTML' que no interpreta etiquetas. Luego seleccionas el código y das a la gamba naranja para poner el lenguaje y sale todo bien (aunque si editas el mensaje, se vuelve a joder...).

Código:
Public Function OrdenesConSalida(orden As String, adisponibles As String[]) As String[]

  Dim i As Integer
  Dim salida As String
  Dim posibilidades As New String[]

  For i = 0 To adisponibles.Max
    'Asignamos cada uno de los disponibles
    System.Shell = adisponibles[i]
    Shell adisponibles[i] & orden To salida
    If Not IsNull(salida) Then
      Print "La orden" & orden & "funcionará con " & adisponibles[i]
      posibilidades.Add(adisponibles[i])
    Endif
  Next
  Return posibilidades

End

Saludos

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
Shell   27-02-2021, 15:19
#15
(26-02-2021, 21:58)jguardon escribió: Pues no sé cómo lo haces, pero a mi me sale bien. Desde donde copias el código? desde el IDE? Quizás la razón sea que lo pegas en el editor del foro de texto enriquecido, yo lo hago pulsando el botón 'Fuente HTML' que no interpreta etiquetas. Luego seleccionas el código y das a la gamba naranja para poner el lenguaje y sale todo bien (aunque si editas el mensaje, se vuelve a joder...).

Desde el propio editor de Gambas, seleccionar y copiar. Luego en el editor de la comunidad, el botón de la gamba roja, escribo gambas
y entre las dos etiquetas que aparecen, pego el código del código fuente.  Y vista previa.

No conocía esa forma de hacerlo, en parte parece más cómodo.

Ya nos contarás. Gracias.

Saludos

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Páginas (2):    1 2
  
Usuarios navegando en este tema: 6 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.