Como “exportar” variáveis de configuração e “fonte” delas no Linux embarcado?

0

Um roteador executa o firmware que contém o BusyBox e, além da memória flash, o dispositivo possui armazenamento de memória secundário. Esse stick USB é montado em /media/Main e /opt :

# mount | grep sda
/dev/sda1 on /media/Main type ext4 (rw,noatime,data=ordered)
/dev/sda1 on /opt type ext4 (rw,noatime,data=ordered)

Duplicatas no banco de dados de localização

O problema é que localize updatedb indexes /media e /opt . Desejo remover permanentemente essas duplicatas de /opt/var/locatedb sem alterar a montagem da unidade. Eu desejo usar o comando updatedb sem adicionar opções a esse comando do cron e do shell. Um alias pode ser uma opção. Embora minha primeira pesquisa por "locate database exclude" tenha retornado um postagem no blog que sugere usar um “/etc/updatedb.conf” para o Arch Linux .

updatedb.conf

A primeira tentativa foi criar um arquivo /opt/etc/updatedb.conf contendo:

# directories to execlude from the locate database
PRUNEPATHS="/media /mnt /tmp /var/tmp /var/cache /var/lock /var/run /var/spool"
export PRUNEPATHS

# filesystems to exclude from the locate database:
PRUNEFS="afs auto autofs binfmt_misc cifs coda configfs cramfs debugfs devpts devtmpfs ftpfs iso9660 mqueue ncpfs
nfs nfs4 proc ramfs securityfs shfs smbfs sshfs sysfs tmpfs udf usbfs vboxsf"
export PRUNEFS

Isso não é suficiente para deixar updatedb usar a configuração desejada. Em seguida estava lendo a documentação de localização do GNU. A documentação atualizada do GNU declara:

Typically, operating systems have a shell script that “exports” configurations for variable definitions and uses another shell script that “sources” the configuration file into the environment and then executes updatedb in the environment.

As minhas variáveis de configuração de exportação e de origem do Linux incorporadas?

Este sistema operacional Linux embarcado pode ter os shell scripts sugeridos pelo GNU que exportam variáveis de configuração e também os retornam ao ambiente.

Como posso verificar se esse SO exporta e origina?

E quando o sistema operacional não funciona, como exportar corretamente e gerar variáveis de configuração aqui?

Ambiente

  • GNU locate foi instalado via opkg neste meio de armazenamento externo
  • BusyBox v1.24.1 de acordo com /bin/sh --version
  • localize (GNU findutils) 4.6.0
  • o shell é -sh de acordo com echo $0
  • /opt/home/admin/.ash_history exists
$ cat /opt/etc/profile
#!/bin/sh

export PATH='/opt/usr/sbin:/opt/sbin:/opt/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin'
export TMP='/opt/tmp'
export TEMP='/opt/tmp'

# This is for interactive sessions only
if [ "$PS1" ] ; then
  export TERM=xterm
  [ -d /opt/share/terminfo ] && export TERMINFO='/opt/share/terminfo'
  export LANG='en_US.UTF-8'
  export LC_ALL='en_US.UTF-8'
fi

export TERMINFO=/opt/share/terminfo
    
por Pro Backup 30.04.2016 / 18:11

1 resposta

1

Onde exportar

Depois de ler o link , uma boa maneira de exportar variáveis para o uso de crontab e shell, é inserir as variáveis relacionadas /opt em /opt/etc/profile .

Onde e como pesquisar

Para usar (" source ") as variáveis em cron são sugeridas para:

  1. crie um script de invólucro de shell
  2. source /etc/profile nesse script wrapper nota: / etc / profile também irá procurar / opt / etc / profile
  3. chame esse script de wrapper prefixando o conteúdo da configuração do crontab com a linha: SHELL=/etc/storage/cron/shell-wrapper.sh
por 30.04.2016 / 23:41