touch /tmp/debug.log
LD_DEBUG=all LD_DEBUG_OUTPUT=/tmp/debug.log ls
Depois de fazer isso, espero que as informações de depuração sejam gravadas no /tmp/debug.log
arquivo, mas ele está vazio.
Ubuntu 20.04
touch /tmp/debug.log
LD_DEBUG=all LD_DEBUG_OUTPUT=/tmp/debug.log ls
Depois de fazer isso, espero que as informações de depuração sejam gravadas no /tmp/debug.log
arquivo, mas ele está vazio.
Ubuntu 20.04
Estou tentando configurar o history
pager fish para bat -l fish
realce de sintaxe. (ou seja, defina a PAGER
variável de ambiente bat -l fish
apenas para o history
comando).
Tentei:
# 1:
alias history "PAGER='bat -l fish' history"
# results in "The function “history” calls itself immediately, which would result in an infinite loop"
# 2:
alias history "PAGER='bat -l fish' \history"
# results in the same.
# 3:
alias _old_history history
alias history "PAGER='bat -l fish' _old_history"
# results in (line 1): The call stack limit has been exceeded
Estou ciente de que abbr
funciona neste caso, mas isso muda meu history
comando e não é isso que eu quero.
estou com um problema, meu comando para mim está funcionando, mas o comando export test=test não funciona no comando com jq, mas se eu executar apenas export test=test está funcionando
então eu tenho o arquivo test.json dentro:
{ "test":"test124","url":"google.com"}
então eu uso este comando:
jq -r 'to_entries | .[] | "export \(.key)=\(.value)"' test.json | sh
eu faço o check-in no ambiente e não vejo nada
eu tento este comando:
jq -r 'to_entries | .[] | "\(.key)=\(.value)"' test.json | while IFS='=' read -r key value; do export "$key=$value"; ; done
mesmo problema
mas se eu colocar este comando está funcionando:
export test=$(jq -r .test test.json)
mas eu quero fazer um loop :/
obrigado pela ajuda
SOLUÇÃO: faltando $(...)
$(jq -r 'to_entries | .[] | "export \(.key)=\(.value)"' test.json)
Se dois diretórios diferentes na variável de ambiente PATH contiverem um binário com o mesmo nome (mas com comportamento ligeiramente diferente), existem especificações/garantias sobre qual deles será usado?
Na minha máquina (macOS Monterey, Darwin 21.2.0) observei (via which <binary name>
) que o binário é escolhido no primeiro diretório encontrado em PATH (lendo seu conteúdo da esquerda para a direita). Mas esse comportamento é padrão em todos os sistemas operacionais Linux/UNIX? ou seja, existe algum padrão que o aplique (por exemplo, POSIX)?
Contexto extra (para os curiosos) : estou escrevendo um projeto que possui um script que baixa uma versão personalizada de um binário padrão em uma pasta específica do projeto e depois invoca outro script que DEVE usar o binário personalizado em vez do normal. . Estou adicionando a pasta com o binário personalizado ao PATH antes de invocar o segundo script. Dado o que observei sobre como PATH é pesquisado em caso de colisões, estou definindo PATH como PATH=<my-custom-folder>:$PATH
em vez de PATH=$PATH:<my-custom-folder>
. Mas este projeto tem vários colaboradores e quero ter certeza de que todos executamos o mesmo binário. Se diferentes sistemas operacionais pesquisassem PATH de maneiras diferentes da minha, as coisas iriam quebrar.
eu sou europeu
export BOOTSTRAP_TIMEZONE="UTC +2"
Não consigo verificar, algo está errado com o Github agora. Se não estiver certo, o que devo mudar?
Nota: Este tópico geral parece ser abordado ad nauseum em mais de um site da SE, mas leia todos os detalhes — não encontrei nenhuma pergunta que abranja todos os critérios descritos abaixo.
Além disso: estou usando
zsh
nos exemplos abaixo. Espero uma solução compatível com POSIX, mas isso não é um requisito difícil: algo que funcionebash
ezsh
seja bom o suficiente.
Aqui está um exemplo para ajudar a esclarecer o título da pergunta:
Digamos que eu tenha os dois arquivos a seguir:
% ls -AF
.env printenv*
% cat printenv
echo $LOCAL_MESSAGE_1
echo $LOCAL_MESSAGE_2
% cat .env
LOCAL_MESSAGE_1="hello world"
LOCAL_MESSAGE_2="goodnight moon"
e gostaria de executar o script printenv
e ver o seguinte em stdout
:
hello world
goodnight moon
Se essas variáveis não existirem em meu ambiente, o script imprimirá linhas vazias (como esperado):
% unset LOCAL_MESSAGE_1
% unset LOCAL_MESSAGE_2
% ./printenv
Se eu definir as variáveis antes de executar o script, elas ficarão disponíveis para ele, mas apenas para esse único processo e não para processos subsequentes iniciados no mesmo shell:
% LOCAL_MESSAGE_1="hello world" LOCAL_MESSAGE_2="goodnight moon" ./printenv
hello world
goodnight moon
% ./printenv
Então, minha pergunta é a seguinte: como posso replicar o comportamento do último exemplo de acordo com os seguintes critérios?
printenv
sem modificação no shell atual — não em um subshell (obrigado RudiC ) — e obtenha a saída desejada, enquanto também.env
arquivo, enquanto tambémunset
delasQue sintaxe de linha única posso usar para fazer isso? O que deve ser substituído no lugar dos pontos de interrogação abaixo para atender aos critérios acima?
% ?????????? ./printenv
hello world
goodnight moon
Estou usando o pass há algum tempo para armazenar senhas, mas agora quero mover meu armazenamento de senhas do local padrão. De acordo com a página man, basta definir a PASSWORD_STORE_DIR
variável para o caminho desejado para substituir o padrão, porém no meu caso isso não tem efeito. Depois de mover a .password-store
pasta para um novo local e definir a variável de ambiente, a execução do comando pass
resulta em "Erro: o armazenamento de senha está vazio. Tente "pass init"". Mesmo se simplesmente renomear o .password-store
diretório inicial interno:
$ cd
$ mv .password-store .pass
$ PASSWORD_STORE_DIR=/home/bakhtin/.pass #bakhtin is the user name
$ pass
Error: password store is empty. Try "pass init".
Alguma ideia de qual pode ser o problema? Certifiquei-me de que não há erros de ortografia no nome da variável e tal.
Estou usando a exportação para definir uma variável de ambiente.
export OPCON_VERBOS=${vb}
Como posso desativá-lo mais tarde para que ele pare de ser definido?
Estou usando o shell Bash no Ubuntu 18.04 LTS (Bionic Beaver). Eu gostaria de permitir que um usuário defina uma variável de ambiente no bash que possa ser usada em instâncias de terminal subsequentes para definir a verbosidade de certas funções usando essa variável.
O que os usuários teriam que fazer para habilitar e desabilitar esse recurso? O foco é que o usuário habilite ou desabilite a funcionalidade da variável de ambiente sem a necessidade de alterá-la .bashrc
diretamente. As configurações devem ser aplicáveis apenas a um usuário específico que deseja tal capacidade.
Eu sempre pensei que PS1
era uma variável de ambiente. Mas quando eu verifico o padrão .bashrc
do Ubuntu e verifico PS1
com
grep PS1 /etc/skel/.bashrc
não há export PS1
.
Se não houver exportação, isso significa que não é uma variável de ambiente?