gnome-terminal não abre abas corretamente no meu script

gnome-terminal não abre abas corretamente no meu script

eu tenho um script para iniciar o terminal gnome com várias guias. As abas são abertas com base em uma lista de diretórios listados no .tabsarquivo que estão no mesmo diretório do script.

Eu crio uma string com vários --tabs --working-directory /some/dirpara cada linha do arquivo de guias.

antes de executar o comando, eu o repito no console. então eu realmente executo. O problema é que o gnome abre as guias, mas não abre cada uma delas em seu diretório de trabalho. No entanto, se eu copiar e colar o que imprimi no console, ele funcionará muito bem. não consigo entender o porquê.

aqui está o roteiro:

#!/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

Responder1

Use arrays para armazenar argumentos separados. O uso de strings deixa o shell confuso quando mais tarde tenta dividi-las em espaços em branco.

TERM_LIST_PARAM=( )

Seguido pela,

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

Então,

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

Além disso, você deve colocar aspas duplas $0, $1, $filee ${profiles_list[@]}em seu código, ou você terá problemas assim que qualquer um desses valores contiver espaços e/ou caracteres globulares.

Veja também:

Responder2

aparentemente aspas simples no diretório estão perturbando a parte do gnome-terminal dentro do script. removê-los resolveu o problema.

informação relacionada