gnome-terminal no abre pestañas correctamente desde mi script

gnome-terminal no abre pestañas correctamente desde mi script

Tengo una secuencia de comandos para iniciar la terminal gnome con varias pestañas. Las pestañas se abren en función de una lista de directorios enumerados en el .tabsarchivo que se encuentran en el mismo directorio que el script.

Creo una cadena con varias --tabs --working-directory /some/dirpara cada línea en el archivo de pestañas.

Antes de ejecutar el comando, lo hago eco en la consola. entonces realmente lo ejecuto. El problema es que gnome abre las pestañas pero no abre cada una en su directorio de trabajo. Sin embargo, si copio y pego lo que imprimí en la consola, funciona muy bien. No puedo entender por qué.

aquí está el guión:

#!/bin/bash 

SCRIPT_DIR=$(dirname $(readlink -f $0))
declare -a profiles_list=()
while [[ "$1" != "" ]]
do
        profiles_list+=($1)
        shift
done

if [[ ${#profiles_list[@]} -eq 0 ]]
then
        profiles_list+=("TERM_DEFAULT")
fi

TERM_LIST_PARAM=""

for profile in ${profiles_list[@]}
do
        file="${SCRIPT_DIR}/${profile}.tabs"
        if [[ ! -f $file ]]
        then
                echo $file does not exists
        fi
        while read tab
        do
                tab_line="--tab --working-directory='${tab}'"
                TERM_LIST_PARAM="$tab_line $TERM_LIST_PARAM"
        done < $file
done
echo gnome-terminal ${TERM_LIST_PARAM}
gnome-terminal -v ${TERM_LIST_PARAM}
echo $?
exit 0

Respuesta1

Utilice matrices para almacenar argumentos separados. El uso de cadenas confunde al shell cuando luego intenta dividirlas en espacios en blanco.

TERM_LIST_PARAM=( )

Seguido por,

tab_line=( --tab --working-directory="$tab" )
TERM_LIST_PARAM=( "${tab_line[@]}" "${TERM_LIST_PARAM[@]}" )  # or: TERM_LIST_PARAM+=( "${tab_line[@]}" )

Entonces,

gnome-terminal -v "${TERM_LIST_PARAM[@]}"

Además, debe comillas dobles $0, $1, $filey ${profiles_list[@]}en su código, o tendrá problemas tan pronto como cualquiera de estos valores contenga espacios y/o caracteres globales.

Ver también:

Respuesta2

Aparentemente, las comillas simples alrededor del directorio están perturbando la pieza de gnome-terminal justo dentro del script. eliminarlos resolvió el problema.

información relacionada