AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1812117
Accepted
Leon
Leon
Asked: 2023-10-11 12:24:01 +0800 CST2023-10-11 12:24:01 +0800 CST 2023-10-11 12:24:01 +0800 CST

Onde definir env var para Debian12?

  • 772

Há muitos lugares que podem conter configurações permanentes de env var no Linux, então não consigo descobrir qual é o mais correto/adequado.

  1. /etc/ambientes
  2. /etc/bash.bashrc
  3. /etc/perfil
  4. /etc/profile.d/*
  5. ~/.bash
  6. ~/.profile

....

Agora preciso definir um env-var que seja um caminho para uma base de código do meu projeto, e esse env-var deve ser compartilhado com muitos usuários do meu Debian-12.

Qual método acima devo usar?

Em outras palavras, qual método é adequado à minha solicitação?

Obrigado!

bash
  • 1 1 respostas
  • 34 Views

1 respostas

  • Voted
  1. Best Answer
    u1686_grawity
    2023-10-11T12:57:18+08:002023-10-11T12:57:18+08:00

    Resumindo, /etc/profile.d/*.shé o local tradicional para variáveis ​​de ambiente para todos os usuários, mas hoje em dia /etc/environmentpode abranger um pouco mais.

    Hoje em dia, nem todos os processos seguem o mesmo caminho de inicialização; na prática, com o GNOME como sua interface gráfica, haverá dois caminhos paralelos que possuem configurações diferentes, e um deles pode se comportar de maneira diferente dependendo se você escolheu o modo Wayland ou o modo X11 (a ser removido em breve) para GNOME.

    1. Quando você faz login em qualquer coisa, 'pam_env' é executado como parte do PAM e carrega /etc/environment. Este seria o local mais apropriado para variáveis ​​de ambiente de "todo o sistema" que devem ser aplicadas a todo tipo de sessão de usuário.

    2. Se uma sessão X11 foi escolhida, o script Xsession do GDM carrega /etc/profile, /etc/xprofile, ~/.profile, ~/.xprofile (como scripts de shell 'sh' - independentemente de qual shell você normalmente usa). Então /etc/xprofile seria um bom lugar para qualquer coisa que seja inerentemente específica do X11.

      Se uma sessão Wayland foi escolhida, o GDM não carrega nada, mas gnome-session fornece comportamento semelhante reiniciando-se através de seu shell de login padrão e, portanto, carregará /etc/profile, ~/.profile (ou ~/.bash_profile) se você estão usando Bash. Portanto, /etc/profile seria um bom lugar para variáveis ​​de ambiente que se aplicam a todos os processos GUI de qualquer tipo.

      Em ambos os casos, se /etc/profile estiver sendo executado, geralmente também carregará /etc/profile.d/*.sh. Alguns pacotes que precisam de uma determinada variável de ambiente fazem isso através de /etc/profile.d/.

      (Se ~/.profile estiver sendo executado através do Bash, ele também carregará explicitamente ~/.bashrc; no entanto, eu geralmente não colocaria variáveis ​​de ambiente globais no bashrc, porque no caso do X11 ~/.profile está realmente sendo executado através de / bin/sh que não é Bash no Debian.)

    3. Ao mesmo tempo, o login faz com que um gerenciador de serviço 'systemd --user' seja iniciado de forma independente em segundo plano. Isso também chama o PAM por conta própria – incluindo pam_env – então começará com tudo o que /etc/environment possui.

    4. O gerenciador de serviços 'systemd --user' carrega tudo de /etc/environment.d/ e ~/.config/environment.d/ (consulte 'man Environment.d') antes de iniciar seus serviços em segundo plano no "nível do usuário".

    5. Agora, gnome-session chama 'systemd-user' e fornece as variáveis ​​​​de ambiente coletadas nas etapas 1-2 (basicamente faz 'systemctl --user import-environment') e, em seguida, solicita que ele inicie o restante da GUI do GNOME. Portanto, os aplicativos GUI terão uma combinação de variáveis ​​de ambiente das etapas 1-2 e 3-4, pois na verdade descendem do 'usuário do systemd' e não da sessão GDM/gnome.

    6. Finalmente, se o usuário abrir um aplicativo de terminal, o shell executado nessa janela de terminal geralmente carregará /etc/bash.bashrc, ~/.bashrc (mas geralmente não os scripts de "perfil"). Portanto, qualquer coisa definida no bashrc estará disponível para janelas de terminal, mas não para o resto do sistema; é um bom lugar para colocar coisas específicas do shell (não apenas ambiente, mas também aliases e coisas assim).

    Para logins SSH, o processo é um pouco mais simples, pois o 'systemd-user' não está envolvido (ele é iniciado, mas permanece em segundo plano e não está envolvido no seu shell de login).

    1. O servidor SSH também chama 'pam_env', carregando /etc/environment.

    2. O servidor SSH inicia seu shell de login; se for Bash, ele carregará /etc/profile (incluindo .d/*.sh) e ~/.profile. Normalmente, seu ~/.profile normalmente carrega ~/.bashrc.

    Os logins do console (tty) funcionam da mesma maneira (apenas com "O processo /sbin/login" em vez de "O servidor SSH").

    • 2

relate perguntas

  • substituindo zsh por bash no usuário não root

  • Tendo problemas para definir variáveis ​​de ambiente no Terminal no macOS High Sierra

  • Existe um equivalente a cd - para cp ou mv?

  • Notificar-enviar notificações aparecendo na janela

  • como abrir um arquivo de escritório do WSL

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve