Como coloco um argumento na variável BROWSER?

0

Eu gosto de poder fazer export BROWSER="lynx -cfg=~/.lynx.cfg" . Eu tentei isso diretamente, e eu também tentei definir um alias alias lynx="lynx -cfg=~/.lynx.cfg" , mas isso não funcionou. (Significa que as ferramentas que usam essa variável para iniciar um navegador ainda ignoraram meu arquivo de configuração ou não iniciaram o navegador.)

    
por HappyFace 23.11.2018 / 07:24

2 respostas

1

$BROWSER é entendido por vários utilitários como sendo o seu navegador da Web de sua preferência.

Dependendo do utilitário, espera-se que ele contenha:

  1. o caminho ou o nome do executável
  2. uma lista de palavras cujo primeiro é o caminho ou nome e os outros uma lista de argumentos iniciais. Se você tiver sorte, também entenderá alguma forma de citar semelhante ao que as shells fazem.
  3. (muito improvável e seria uma coisa muito imprudente) o início de uma linha de comando do shell.

Se você estivesse no primeiro caso, esperaria que o utilitário em que você tentou se queixasse de um comando "lynx -cfg=~/.lynx.cfg" inexistente.

No terceiro caso, observe que os shells não expandem o ~ em -cfg=~/.lynx.cfg . zsh apenas faz isso quando a opção magicequalsubst está ativada. bash apenas expande um ~ após um = se o que está à esquerda de = se parece com um nome de variável válido e não está no modo POSIX.

No entanto lynx (pelo menos versão 2.8.9dev.16 no meu sistema) parece entender ~ como significando o diretório pessoal de uma pessoa, então eu esperaria que você trabalhasse para utilitários no segundo e terceiro categoria.

$ BROWSER='echo -cfg=~' sensible-browser foo
-cfg=~ foo

Assim, o seu navegador é da categoria quarto que ignora qualquer coisa, exceto a primeira palavra, ou apenas dá uma dica sobre o que é seu navegador; ou a sua versão de lynx não entende ~ como significando casa.

Execute seu utilitário como strace -fe execve the-utility para ver o que ele tenta executar.

No caso de suas versões de lynx não tratarem ~ como home, você pode definir $BROWSER como:

export BROWSER="lynx -cfg=$HOME/.lynx.cfg"

(assumindo $HOME não contém espaços em branco ou aspas (ou outros caracteres especiais para um shell))

Em qualquer caso, você deve poder definir $BROWSER como um script que passa os parâmetros corretos para lynx , como:

#! /bin/sh -
exec lynx -cfg="$HOME/.lynx.cfg" "$@"

e use isso como seu $BROWSER .

Por acaso, se o seu $HOME começou com ~ caracteres, isso enganaria lynx , e é por isso que não é uma boa ideia que lynx manipule esses ~ por si só. / sup>

    
por 03.12.2018 / 08:36
1

Eu não acho que você possa, no entanto, tentar:

Deve usar o caminho absoluto.

export BROWSER='/home/username/lynx.sh'

Crie um novo arquivo lynx.sh no diretório home.

#!/bin/bash
linx -cfg=/home/username/.lynx.cfg

Torne exequível.

Então:

Launching Browser should launch lynx.
or
./lynx.sh

E / ou:

Tipo:

whereis lynx

Use no próximo passo.

Editar bash_aliases:

Deve usar o caminho absoluto para: lynx.cfg
Deve usar o caminho absoluto para: lynx, se não estiver em / usr / bin /

alias=lynx='/path/to/lynx -cfg=/home/username/.lynx.cfg'

Deve usar '' se o caminho contiver caracteres especiais.

    
por 23.11.2018 / 08:04