How to list all variables names and their current values?












314














How to list all variables names and their current values?



Including not only $HOME, $PWD etc but any other you have defined.










share|improve this question




















  • 3




    superuser.com/questions/420295/…
    – Ciro Santilli 新疆改造中心 六四事件 法轮功
    Nov 30 '15 at 14:46
















314














How to list all variables names and their current values?



Including not only $HOME, $PWD etc but any other you have defined.










share|improve this question




















  • 3




    superuser.com/questions/420295/…
    – Ciro Santilli 新疆改造中心 六四事件 法轮功
    Nov 30 '15 at 14:46














314












314








314


78





How to list all variables names and their current values?



Including not only $HOME, $PWD etc but any other you have defined.










share|improve this question















How to list all variables names and their current values?



Including not only $HOME, $PWD etc but any other you have defined.







command-line bash environment-variables






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Aug 24 '16 at 12:25









7ochem

174212




174212










asked Mar 30 '13 at 0:36









Strapakowsky

3,719112638




3,719112638








  • 3




    superuser.com/questions/420295/…
    – Ciro Santilli 新疆改造中心 六四事件 法轮功
    Nov 30 '15 at 14:46














  • 3




    superuser.com/questions/420295/…
    – Ciro Santilli 新疆改造中心 六四事件 法轮功
    Nov 30 '15 at 14:46








3




3




superuser.com/questions/420295/…
– Ciro Santilli 新疆改造中心 六四事件 法轮功
Nov 30 '15 at 14:46




superuser.com/questions/420295/…
– Ciro Santilli 新疆改造中心 六四事件 法轮功
Nov 30 '15 at 14:46










8 Answers
8






active

oldest

votes


















441














For bash: (the standard shell in Ubuntu)



Enter the following command in a terminal to print all the environment variables:



printenv


For further information about this command, read the printenv man page.





To show a list including the "shell variables" you can enter the next command:



( set -o posix ; set ) | less


This will show you not only the shell variables, but the environment variables too.



For more information related with this topic read:





  • How to list variables declared in script in bash? from SO and


  • How to print all environment variables defined (but not necessarily
    exported) in bash from
    UnixSE

  • Environment variable vs Shell variable, what's the difference?




For zsh: (an advanced shell)



Use the following command:



( setopt posixbuiltin; set; ) | less


For more information about ZSH options, see zshoptions man page.






share|improve this answer



















  • 11




    If I go to the terminal and write MYNEWVARIABLE=Ubuntu and execute printenv it doesn't show there. Why is that, and how do those others show up?
    – Strapakowsky
    Mar 30 '13 at 3:30






  • 4




    Probably you are seeing the difference between a shell variable and an environment variable. Try export MYNEWVARIABLE=Ubuntu and it will work as you expect.
    – Rmano
    Oct 12 '13 at 0:41






  • 3




    if you simply execute set, it lists the variable created by you as well. Or do set | grep myvar
    – Sergiy Kolodyazhnyy
    Jan 4 '15 at 15:01






  • 3




    printenv is an external command, so it only knows about (and prints) exported environment variables. set is an internal bash command, so it shows all the "shell variables" (unexported environment variables) as well as the exported environment variables.
    – Dan Pritts
    Jul 30 '15 at 15:33






  • 1




    To expand on @Rmano's reply to @Strapakowsky... This will not work unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, but this will unset MYNEWVARIABLE; export MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, and this will unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu printenv | grep MYNEW. Using export says "the variable I'm setting should be part of the environment that gets passed to processes, not just a variable in this shell." My third example says "the variable should be part of the environment that gets passed to THIS process, but not stick around afterward."
    – Bruno Bronosky
    Aug 26 '16 at 17:39





















46














I know that this question is quite old and answered, but I think I can add a bit of useful information.



In all the methods described above, the procedure that is suggested is:




  • launch a terminal

  • show the environment variables using env, or
    printenv or whatever


The problem of these solutions are that you are seeing the environment variables of the shell that is running into the terminal. You are not seeing the environment variables available to an application run, for example, directly by the graphic interface.



This is noticeable if, for example, you use your ~/.profile, or .bashrc, or .zshenv (depending on your shell) to modify the environment variables --- like the classic addition of directories to the path.



To see the environment variables available to the application started directly in the graphic environment, you can do the following (in Gnome Shell, I am sure there is an equivalent method in all the other DE):




  • press Alt-F2

  • run the command xterm -e bash --noprofile --norc


You now have a terminal with a shell that did not add any environment variables. You can use env here to list all your environment variables:



Example of the bare shell



Obviously the new shell will have the environment variables added by the system files, but that variables should be available (by inheritance) to all programs in the system anyway.



I am posting this because it's the fourth time I have to search this trick again, checking my .pam_environment file. So now I will find it faster (and in the process, I hope helping someone else...)






share|improve this answer























  • Requires you have a desktop environment, not useful for server CLI-only folk.
    – K7AAY
    Oct 21 '13 at 18:21






  • 4




    Yes --- but then for CLI only the previous answer is ok. I was just pointing out that sometime you need to check environment variables available to application started by the graphical environment, which is not the same set you see when you start a terminal in it. For example, if you are trying to understand why your Kile app can't compile a LaTeX file, while in a terminal you can, the trick I posted here will help a lot.
    – Rmano
    Oct 21 '13 at 20:36






  • 2




    Thanks for a very useful answer! I just linked to it from help.ubuntu.com/community/…
    – Gunnar Hjalmarsson
    Jan 2 '14 at 17:06










  • Thanks. Did you recommend xterm -e bash --noprofile --norc because the startup files are not read and executed when Ubuntu is started with graphical interface ? See askubuntu.com/q/1025845/1471
    – Tim
    Apr 17 at 14:49










  • @Tim basically it's just a way to have a shell without anything more than the environment variables available to the graphic environment. A standard terminal will read (or re-read) .bashrc for example...
    – Rmano
    Apr 17 at 15:06



















35














You can see all variables with the declare builtin.



declare -p


If you're only interested in environment variables, use



declare -xp


Run help declare to see what the other options are.






share|improve this answer























  • this is far neat-er solution than POSIXLY_CORRECT=1 set and it is also worthy of mention that declare is alias (in that context) for typeset, another bash builtin.
    – w17t
    Feb 7 at 16:50



















11














To list the environment variables in terminal with CTRL+ALT+T you can use env command.



for example :



[raja@localhost ~]$ env
XDG_VTNR=1
SSH_AGENT_PID=3671
XDG_SESSION_ID=3
HOSTNAME=localhost.localdomain
IMSETTINGS_INTEGRATE_DESKTOP=yes
GPG_AGENT_INFO=/home/raja/.gnupg/S.gpg-agent:3691:1
GLADE_PIXMAP_PATH=:
TERM=xterm-256color
SHELL=/bin/bash
XDG_MENU_PREFIX=xfce-
DESKTOP_STARTUP_ID=
HISTSIZE=1000
XDG_SESSION_COOKIE=0250277dd805498381e96c05d88068b0-1364679772.845276-1676152201
WINDOWID=65011716
GNOME_KEYRING_CONTROL=/home/raja/.cache/keyring-N3QoQ2
IMSETTINGS_MODULE=none
QT_GRAPHICSSYSTEM_CHECKED=1
USER=raja


etc.



hope that helps.






share|improve this answer





















  • I've noticed that env misses some variables o_O. specifically after sourcing a VAR=VAL file.
    – ThorSummoner
    Aug 2 '17 at 19:43






  • 1




    @ThorSummoner The answer here might help stackoverflow.com/questions/15474650/…
    – georaldc
    Aug 14 '17 at 17:48



















4














In bash using compgen:



compgen -v | while read line; do echo $line=${!line};done  





share|improve this answer



















  • 1




    This should be the accepted answer, as all others list more than just the name itself. In my case some variables contain multiline values which makes the other solutions not feasable.
    – Mene
    Nov 9 '17 at 15:20










  • A variant: compgen -v | while read line; do declare -p $line; done
    – Eljay
    Dec 13 at 17:58



















2














env is a POSIX 7 way:



export asdf=qwer
env | grep asdf


Sample output:



asdf=qwer


It only shows exported variables: non-exported variables are not usually considered "environment variables".



Prefer that over printenv, which is not POSIX. Both seem to do the same thing without arguments: https://unix.stackexchange.com/questions/123473/what-is-the-difference-between-env-and-printenv






share|improve this answer























  • Already mentioned two years ago: askubuntu.com/a/276162/158442
    – muru
    Nov 30 '15 at 15:00










  • @muru fair enough. Wish it had made env more visible with better formatting, and I've added more info.
    – Ciro Santilli 新疆改造中心 六四事件 法轮功
    Nov 30 '15 at 15:01










  • That's what editing is for.
    – muru
    Nov 30 '15 at 15:02



















1














If you want a specific environment variable, rather than printing them all with printenv, you can for example print it by doing echo "$PWD"






share|improve this answer





























    1














    Most solutions here either print only environment variables, or have the drawback that env or (set -o posix; posix) do not print values in parseable form (try to print variable A=$'arnb'...).



    Here is a function that will print all variables, one variable per line, in the POSIX escaped form:



    function dump_vars {
    local VARNAME
    compgen -v | while read -r VARNAME; do
    printf "$VARNAME=%qn" "${!VARNAME}"
    done
    }


    Thanks to @tmgoblin for pointing out the use of compgen -v.






    share|improve this answer





















    • Excellent first answer! +1 Keep up the good work!
      – Fabby
      Dec 15 at 16:29











    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "89"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f275965%2fhow-to-list-all-variables-names-and-their-current-values%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    8 Answers
    8






    active

    oldest

    votes








    8 Answers
    8






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    441














    For bash: (the standard shell in Ubuntu)



    Enter the following command in a terminal to print all the environment variables:



    printenv


    For further information about this command, read the printenv man page.





    To show a list including the "shell variables" you can enter the next command:



    ( set -o posix ; set ) | less


    This will show you not only the shell variables, but the environment variables too.



    For more information related with this topic read:





    • How to list variables declared in script in bash? from SO and


    • How to print all environment variables defined (but not necessarily
      exported) in bash from
      UnixSE

    • Environment variable vs Shell variable, what's the difference?




    For zsh: (an advanced shell)



    Use the following command:



    ( setopt posixbuiltin; set; ) | less


    For more information about ZSH options, see zshoptions man page.






    share|improve this answer



















    • 11




      If I go to the terminal and write MYNEWVARIABLE=Ubuntu and execute printenv it doesn't show there. Why is that, and how do those others show up?
      – Strapakowsky
      Mar 30 '13 at 3:30






    • 4




      Probably you are seeing the difference between a shell variable and an environment variable. Try export MYNEWVARIABLE=Ubuntu and it will work as you expect.
      – Rmano
      Oct 12 '13 at 0:41






    • 3




      if you simply execute set, it lists the variable created by you as well. Or do set | grep myvar
      – Sergiy Kolodyazhnyy
      Jan 4 '15 at 15:01






    • 3




      printenv is an external command, so it only knows about (and prints) exported environment variables. set is an internal bash command, so it shows all the "shell variables" (unexported environment variables) as well as the exported environment variables.
      – Dan Pritts
      Jul 30 '15 at 15:33






    • 1




      To expand on @Rmano's reply to @Strapakowsky... This will not work unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, but this will unset MYNEWVARIABLE; export MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, and this will unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu printenv | grep MYNEW. Using export says "the variable I'm setting should be part of the environment that gets passed to processes, not just a variable in this shell." My third example says "the variable should be part of the environment that gets passed to THIS process, but not stick around afterward."
      – Bruno Bronosky
      Aug 26 '16 at 17:39


















    441














    For bash: (the standard shell in Ubuntu)



    Enter the following command in a terminal to print all the environment variables:



    printenv


    For further information about this command, read the printenv man page.





    To show a list including the "shell variables" you can enter the next command:



    ( set -o posix ; set ) | less


    This will show you not only the shell variables, but the environment variables too.



    For more information related with this topic read:





    • How to list variables declared in script in bash? from SO and


    • How to print all environment variables defined (but not necessarily
      exported) in bash from
      UnixSE

    • Environment variable vs Shell variable, what's the difference?




    For zsh: (an advanced shell)



    Use the following command:



    ( setopt posixbuiltin; set; ) | less


    For more information about ZSH options, see zshoptions man page.






    share|improve this answer



















    • 11




      If I go to the terminal and write MYNEWVARIABLE=Ubuntu and execute printenv it doesn't show there. Why is that, and how do those others show up?
      – Strapakowsky
      Mar 30 '13 at 3:30






    • 4




      Probably you are seeing the difference between a shell variable and an environment variable. Try export MYNEWVARIABLE=Ubuntu and it will work as you expect.
      – Rmano
      Oct 12 '13 at 0:41






    • 3




      if you simply execute set, it lists the variable created by you as well. Or do set | grep myvar
      – Sergiy Kolodyazhnyy
      Jan 4 '15 at 15:01






    • 3




      printenv is an external command, so it only knows about (and prints) exported environment variables. set is an internal bash command, so it shows all the "shell variables" (unexported environment variables) as well as the exported environment variables.
      – Dan Pritts
      Jul 30 '15 at 15:33






    • 1




      To expand on @Rmano's reply to @Strapakowsky... This will not work unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, but this will unset MYNEWVARIABLE; export MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, and this will unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu printenv | grep MYNEW. Using export says "the variable I'm setting should be part of the environment that gets passed to processes, not just a variable in this shell." My third example says "the variable should be part of the environment that gets passed to THIS process, but not stick around afterward."
      – Bruno Bronosky
      Aug 26 '16 at 17:39
















    441












    441








    441






    For bash: (the standard shell in Ubuntu)



    Enter the following command in a terminal to print all the environment variables:



    printenv


    For further information about this command, read the printenv man page.





    To show a list including the "shell variables" you can enter the next command:



    ( set -o posix ; set ) | less


    This will show you not only the shell variables, but the environment variables too.



    For more information related with this topic read:





    • How to list variables declared in script in bash? from SO and


    • How to print all environment variables defined (but not necessarily
      exported) in bash from
      UnixSE

    • Environment variable vs Shell variable, what's the difference?




    For zsh: (an advanced shell)



    Use the following command:



    ( setopt posixbuiltin; set; ) | less


    For more information about ZSH options, see zshoptions man page.






    share|improve this answer














    For bash: (the standard shell in Ubuntu)



    Enter the following command in a terminal to print all the environment variables:



    printenv


    For further information about this command, read the printenv man page.





    To show a list including the "shell variables" you can enter the next command:



    ( set -o posix ; set ) | less


    This will show you not only the shell variables, but the environment variables too.



    For more information related with this topic read:





    • How to list variables declared in script in bash? from SO and


    • How to print all environment variables defined (but not necessarily
      exported) in bash from
      UnixSE

    • Environment variable vs Shell variable, what's the difference?




    For zsh: (an advanced shell)



    Use the following command:



    ( setopt posixbuiltin; set; ) | less


    For more information about ZSH options, see zshoptions man page.







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited Oct 3 at 19:40









    Fabby

    26.4k1360159




    26.4k1360159










    answered Mar 30 '13 at 1:21









    Lucio

    12.4k2185157




    12.4k2185157








    • 11




      If I go to the terminal and write MYNEWVARIABLE=Ubuntu and execute printenv it doesn't show there. Why is that, and how do those others show up?
      – Strapakowsky
      Mar 30 '13 at 3:30






    • 4




      Probably you are seeing the difference between a shell variable and an environment variable. Try export MYNEWVARIABLE=Ubuntu and it will work as you expect.
      – Rmano
      Oct 12 '13 at 0:41






    • 3




      if you simply execute set, it lists the variable created by you as well. Or do set | grep myvar
      – Sergiy Kolodyazhnyy
      Jan 4 '15 at 15:01






    • 3




      printenv is an external command, so it only knows about (and prints) exported environment variables. set is an internal bash command, so it shows all the "shell variables" (unexported environment variables) as well as the exported environment variables.
      – Dan Pritts
      Jul 30 '15 at 15:33






    • 1




      To expand on @Rmano's reply to @Strapakowsky... This will not work unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, but this will unset MYNEWVARIABLE; export MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, and this will unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu printenv | grep MYNEW. Using export says "the variable I'm setting should be part of the environment that gets passed to processes, not just a variable in this shell." My third example says "the variable should be part of the environment that gets passed to THIS process, but not stick around afterward."
      – Bruno Bronosky
      Aug 26 '16 at 17:39
















    • 11




      If I go to the terminal and write MYNEWVARIABLE=Ubuntu and execute printenv it doesn't show there. Why is that, and how do those others show up?
      – Strapakowsky
      Mar 30 '13 at 3:30






    • 4




      Probably you are seeing the difference between a shell variable and an environment variable. Try export MYNEWVARIABLE=Ubuntu and it will work as you expect.
      – Rmano
      Oct 12 '13 at 0:41






    • 3




      if you simply execute set, it lists the variable created by you as well. Or do set | grep myvar
      – Sergiy Kolodyazhnyy
      Jan 4 '15 at 15:01






    • 3




      printenv is an external command, so it only knows about (and prints) exported environment variables. set is an internal bash command, so it shows all the "shell variables" (unexported environment variables) as well as the exported environment variables.
      – Dan Pritts
      Jul 30 '15 at 15:33






    • 1




      To expand on @Rmano's reply to @Strapakowsky... This will not work unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, but this will unset MYNEWVARIABLE; export MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, and this will unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu printenv | grep MYNEW. Using export says "the variable I'm setting should be part of the environment that gets passed to processes, not just a variable in this shell." My third example says "the variable should be part of the environment that gets passed to THIS process, but not stick around afterward."
      – Bruno Bronosky
      Aug 26 '16 at 17:39










    11




    11




    If I go to the terminal and write MYNEWVARIABLE=Ubuntu and execute printenv it doesn't show there. Why is that, and how do those others show up?
    – Strapakowsky
    Mar 30 '13 at 3:30




    If I go to the terminal and write MYNEWVARIABLE=Ubuntu and execute printenv it doesn't show there. Why is that, and how do those others show up?
    – Strapakowsky
    Mar 30 '13 at 3:30




    4




    4




    Probably you are seeing the difference between a shell variable and an environment variable. Try export MYNEWVARIABLE=Ubuntu and it will work as you expect.
    – Rmano
    Oct 12 '13 at 0:41




    Probably you are seeing the difference between a shell variable and an environment variable. Try export MYNEWVARIABLE=Ubuntu and it will work as you expect.
    – Rmano
    Oct 12 '13 at 0:41




    3




    3




    if you simply execute set, it lists the variable created by you as well. Or do set | grep myvar
    – Sergiy Kolodyazhnyy
    Jan 4 '15 at 15:01




    if you simply execute set, it lists the variable created by you as well. Or do set | grep myvar
    – Sergiy Kolodyazhnyy
    Jan 4 '15 at 15:01




    3




    3




    printenv is an external command, so it only knows about (and prints) exported environment variables. set is an internal bash command, so it shows all the "shell variables" (unexported environment variables) as well as the exported environment variables.
    – Dan Pritts
    Jul 30 '15 at 15:33




    printenv is an external command, so it only knows about (and prints) exported environment variables. set is an internal bash command, so it shows all the "shell variables" (unexported environment variables) as well as the exported environment variables.
    – Dan Pritts
    Jul 30 '15 at 15:33




    1




    1




    To expand on @Rmano's reply to @Strapakowsky... This will not work unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, but this will unset MYNEWVARIABLE; export MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, and this will unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu printenv | grep MYNEW. Using export says "the variable I'm setting should be part of the environment that gets passed to processes, not just a variable in this shell." My third example says "the variable should be part of the environment that gets passed to THIS process, but not stick around afterward."
    – Bruno Bronosky
    Aug 26 '16 at 17:39






    To expand on @Rmano's reply to @Strapakowsky... This will not work unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, but this will unset MYNEWVARIABLE; export MYNEWVARIABLE=Ubuntu; printenv | grep MYNEW, and this will unset MYNEWVARIABLE; MYNEWVARIABLE=Ubuntu printenv | grep MYNEW. Using export says "the variable I'm setting should be part of the environment that gets passed to processes, not just a variable in this shell." My third example says "the variable should be part of the environment that gets passed to THIS process, but not stick around afterward."
    – Bruno Bronosky
    Aug 26 '16 at 17:39















    46














    I know that this question is quite old and answered, but I think I can add a bit of useful information.



    In all the methods described above, the procedure that is suggested is:




    • launch a terminal

    • show the environment variables using env, or
      printenv or whatever


    The problem of these solutions are that you are seeing the environment variables of the shell that is running into the terminal. You are not seeing the environment variables available to an application run, for example, directly by the graphic interface.



    This is noticeable if, for example, you use your ~/.profile, or .bashrc, or .zshenv (depending on your shell) to modify the environment variables --- like the classic addition of directories to the path.



    To see the environment variables available to the application started directly in the graphic environment, you can do the following (in Gnome Shell, I am sure there is an equivalent method in all the other DE):




    • press Alt-F2

    • run the command xterm -e bash --noprofile --norc


    You now have a terminal with a shell that did not add any environment variables. You can use env here to list all your environment variables:



    Example of the bare shell



    Obviously the new shell will have the environment variables added by the system files, but that variables should be available (by inheritance) to all programs in the system anyway.



    I am posting this because it's the fourth time I have to search this trick again, checking my .pam_environment file. So now I will find it faster (and in the process, I hope helping someone else...)






    share|improve this answer























    • Requires you have a desktop environment, not useful for server CLI-only folk.
      – K7AAY
      Oct 21 '13 at 18:21






    • 4




      Yes --- but then for CLI only the previous answer is ok. I was just pointing out that sometime you need to check environment variables available to application started by the graphical environment, which is not the same set you see when you start a terminal in it. For example, if you are trying to understand why your Kile app can't compile a LaTeX file, while in a terminal you can, the trick I posted here will help a lot.
      – Rmano
      Oct 21 '13 at 20:36






    • 2




      Thanks for a very useful answer! I just linked to it from help.ubuntu.com/community/…
      – Gunnar Hjalmarsson
      Jan 2 '14 at 17:06










    • Thanks. Did you recommend xterm -e bash --noprofile --norc because the startup files are not read and executed when Ubuntu is started with graphical interface ? See askubuntu.com/q/1025845/1471
      – Tim
      Apr 17 at 14:49










    • @Tim basically it's just a way to have a shell without anything more than the environment variables available to the graphic environment. A standard terminal will read (or re-read) .bashrc for example...
      – Rmano
      Apr 17 at 15:06
















    46














    I know that this question is quite old and answered, but I think I can add a bit of useful information.



    In all the methods described above, the procedure that is suggested is:




    • launch a terminal

    • show the environment variables using env, or
      printenv or whatever


    The problem of these solutions are that you are seeing the environment variables of the shell that is running into the terminal. You are not seeing the environment variables available to an application run, for example, directly by the graphic interface.



    This is noticeable if, for example, you use your ~/.profile, or .bashrc, or .zshenv (depending on your shell) to modify the environment variables --- like the classic addition of directories to the path.



    To see the environment variables available to the application started directly in the graphic environment, you can do the following (in Gnome Shell, I am sure there is an equivalent method in all the other DE):




    • press Alt-F2

    • run the command xterm -e bash --noprofile --norc


    You now have a terminal with a shell that did not add any environment variables. You can use env here to list all your environment variables:



    Example of the bare shell



    Obviously the new shell will have the environment variables added by the system files, but that variables should be available (by inheritance) to all programs in the system anyway.



    I am posting this because it's the fourth time I have to search this trick again, checking my .pam_environment file. So now I will find it faster (and in the process, I hope helping someone else...)






    share|improve this answer























    • Requires you have a desktop environment, not useful for server CLI-only folk.
      – K7AAY
      Oct 21 '13 at 18:21






    • 4




      Yes --- but then for CLI only the previous answer is ok. I was just pointing out that sometime you need to check environment variables available to application started by the graphical environment, which is not the same set you see when you start a terminal in it. For example, if you are trying to understand why your Kile app can't compile a LaTeX file, while in a terminal you can, the trick I posted here will help a lot.
      – Rmano
      Oct 21 '13 at 20:36






    • 2




      Thanks for a very useful answer! I just linked to it from help.ubuntu.com/community/…
      – Gunnar Hjalmarsson
      Jan 2 '14 at 17:06










    • Thanks. Did you recommend xterm -e bash --noprofile --norc because the startup files are not read and executed when Ubuntu is started with graphical interface ? See askubuntu.com/q/1025845/1471
      – Tim
      Apr 17 at 14:49










    • @Tim basically it's just a way to have a shell without anything more than the environment variables available to the graphic environment. A standard terminal will read (or re-read) .bashrc for example...
      – Rmano
      Apr 17 at 15:06














    46












    46








    46






    I know that this question is quite old and answered, but I think I can add a bit of useful information.



    In all the methods described above, the procedure that is suggested is:




    • launch a terminal

    • show the environment variables using env, or
      printenv or whatever


    The problem of these solutions are that you are seeing the environment variables of the shell that is running into the terminal. You are not seeing the environment variables available to an application run, for example, directly by the graphic interface.



    This is noticeable if, for example, you use your ~/.profile, or .bashrc, or .zshenv (depending on your shell) to modify the environment variables --- like the classic addition of directories to the path.



    To see the environment variables available to the application started directly in the graphic environment, you can do the following (in Gnome Shell, I am sure there is an equivalent method in all the other DE):




    • press Alt-F2

    • run the command xterm -e bash --noprofile --norc


    You now have a terminal with a shell that did not add any environment variables. You can use env here to list all your environment variables:



    Example of the bare shell



    Obviously the new shell will have the environment variables added by the system files, but that variables should be available (by inheritance) to all programs in the system anyway.



    I am posting this because it's the fourth time I have to search this trick again, checking my .pam_environment file. So now I will find it faster (and in the process, I hope helping someone else...)






    share|improve this answer














    I know that this question is quite old and answered, but I think I can add a bit of useful information.



    In all the methods described above, the procedure that is suggested is:




    • launch a terminal

    • show the environment variables using env, or
      printenv or whatever


    The problem of these solutions are that you are seeing the environment variables of the shell that is running into the terminal. You are not seeing the environment variables available to an application run, for example, directly by the graphic interface.



    This is noticeable if, for example, you use your ~/.profile, or .bashrc, or .zshenv (depending on your shell) to modify the environment variables --- like the classic addition of directories to the path.



    To see the environment variables available to the application started directly in the graphic environment, you can do the following (in Gnome Shell, I am sure there is an equivalent method in all the other DE):




    • press Alt-F2

    • run the command xterm -e bash --noprofile --norc


    You now have a terminal with a shell that did not add any environment variables. You can use env here to list all your environment variables:



    Example of the bare shell



    Obviously the new shell will have the environment variables added by the system files, but that variables should be available (by inheritance) to all programs in the system anyway.



    I am posting this because it's the fourth time I have to search this trick again, checking my .pam_environment file. So now I will find it faster (and in the process, I hope helping someone else...)







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited Dec 25 '16 at 20:33









    Byte Commander

    62.9k26170286




    62.9k26170286










    answered Oct 12 '13 at 0:37









    Rmano

    25.1k877144




    25.1k877144












    • Requires you have a desktop environment, not useful for server CLI-only folk.
      – K7AAY
      Oct 21 '13 at 18:21






    • 4




      Yes --- but then for CLI only the previous answer is ok. I was just pointing out that sometime you need to check environment variables available to application started by the graphical environment, which is not the same set you see when you start a terminal in it. For example, if you are trying to understand why your Kile app can't compile a LaTeX file, while in a terminal you can, the trick I posted here will help a lot.
      – Rmano
      Oct 21 '13 at 20:36






    • 2




      Thanks for a very useful answer! I just linked to it from help.ubuntu.com/community/…
      – Gunnar Hjalmarsson
      Jan 2 '14 at 17:06










    • Thanks. Did you recommend xterm -e bash --noprofile --norc because the startup files are not read and executed when Ubuntu is started with graphical interface ? See askubuntu.com/q/1025845/1471
      – Tim
      Apr 17 at 14:49










    • @Tim basically it's just a way to have a shell without anything more than the environment variables available to the graphic environment. A standard terminal will read (or re-read) .bashrc for example...
      – Rmano
      Apr 17 at 15:06


















    • Requires you have a desktop environment, not useful for server CLI-only folk.
      – K7AAY
      Oct 21 '13 at 18:21






    • 4




      Yes --- but then for CLI only the previous answer is ok. I was just pointing out that sometime you need to check environment variables available to application started by the graphical environment, which is not the same set you see when you start a terminal in it. For example, if you are trying to understand why your Kile app can't compile a LaTeX file, while in a terminal you can, the trick I posted here will help a lot.
      – Rmano
      Oct 21 '13 at 20:36






    • 2




      Thanks for a very useful answer! I just linked to it from help.ubuntu.com/community/…
      – Gunnar Hjalmarsson
      Jan 2 '14 at 17:06










    • Thanks. Did you recommend xterm -e bash --noprofile --norc because the startup files are not read and executed when Ubuntu is started with graphical interface ? See askubuntu.com/q/1025845/1471
      – Tim
      Apr 17 at 14:49










    • @Tim basically it's just a way to have a shell without anything more than the environment variables available to the graphic environment. A standard terminal will read (or re-read) .bashrc for example...
      – Rmano
      Apr 17 at 15:06
















    Requires you have a desktop environment, not useful for server CLI-only folk.
    – K7AAY
    Oct 21 '13 at 18:21




    Requires you have a desktop environment, not useful for server CLI-only folk.
    – K7AAY
    Oct 21 '13 at 18:21




    4




    4




    Yes --- but then for CLI only the previous answer is ok. I was just pointing out that sometime you need to check environment variables available to application started by the graphical environment, which is not the same set you see when you start a terminal in it. For example, if you are trying to understand why your Kile app can't compile a LaTeX file, while in a terminal you can, the trick I posted here will help a lot.
    – Rmano
    Oct 21 '13 at 20:36




    Yes --- but then for CLI only the previous answer is ok. I was just pointing out that sometime you need to check environment variables available to application started by the graphical environment, which is not the same set you see when you start a terminal in it. For example, if you are trying to understand why your Kile app can't compile a LaTeX file, while in a terminal you can, the trick I posted here will help a lot.
    – Rmano
    Oct 21 '13 at 20:36




    2




    2




    Thanks for a very useful answer! I just linked to it from help.ubuntu.com/community/…
    – Gunnar Hjalmarsson
    Jan 2 '14 at 17:06




    Thanks for a very useful answer! I just linked to it from help.ubuntu.com/community/…
    – Gunnar Hjalmarsson
    Jan 2 '14 at 17:06












    Thanks. Did you recommend xterm -e bash --noprofile --norc because the startup files are not read and executed when Ubuntu is started with graphical interface ? See askubuntu.com/q/1025845/1471
    – Tim
    Apr 17 at 14:49




    Thanks. Did you recommend xterm -e bash --noprofile --norc because the startup files are not read and executed when Ubuntu is started with graphical interface ? See askubuntu.com/q/1025845/1471
    – Tim
    Apr 17 at 14:49












    @Tim basically it's just a way to have a shell without anything more than the environment variables available to the graphic environment. A standard terminal will read (or re-read) .bashrc for example...
    – Rmano
    Apr 17 at 15:06




    @Tim basically it's just a way to have a shell without anything more than the environment variables available to the graphic environment. A standard terminal will read (or re-read) .bashrc for example...
    – Rmano
    Apr 17 at 15:06











    35














    You can see all variables with the declare builtin.



    declare -p


    If you're only interested in environment variables, use



    declare -xp


    Run help declare to see what the other options are.






    share|improve this answer























    • this is far neat-er solution than POSIXLY_CORRECT=1 set and it is also worthy of mention that declare is alias (in that context) for typeset, another bash builtin.
      – w17t
      Feb 7 at 16:50
















    35














    You can see all variables with the declare builtin.



    declare -p


    If you're only interested in environment variables, use



    declare -xp


    Run help declare to see what the other options are.






    share|improve this answer























    • this is far neat-er solution than POSIXLY_CORRECT=1 set and it is also worthy of mention that declare is alias (in that context) for typeset, another bash builtin.
      – w17t
      Feb 7 at 16:50














    35












    35








    35






    You can see all variables with the declare builtin.



    declare -p


    If you're only interested in environment variables, use



    declare -xp


    Run help declare to see what the other options are.






    share|improve this answer














    You can see all variables with the declare builtin.



    declare -p


    If you're only interested in environment variables, use



    declare -xp


    Run help declare to see what the other options are.







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited Apr 8 '13 at 6:07

























    answered Apr 4 '13 at 20:28









    geirha

    30.5k95659




    30.5k95659












    • this is far neat-er solution than POSIXLY_CORRECT=1 set and it is also worthy of mention that declare is alias (in that context) for typeset, another bash builtin.
      – w17t
      Feb 7 at 16:50


















    • this is far neat-er solution than POSIXLY_CORRECT=1 set and it is also worthy of mention that declare is alias (in that context) for typeset, another bash builtin.
      – w17t
      Feb 7 at 16:50
















    this is far neat-er solution than POSIXLY_CORRECT=1 set and it is also worthy of mention that declare is alias (in that context) for typeset, another bash builtin.
    – w17t
    Feb 7 at 16:50




    this is far neat-er solution than POSIXLY_CORRECT=1 set and it is also worthy of mention that declare is alias (in that context) for typeset, another bash builtin.
    – w17t
    Feb 7 at 16:50











    11














    To list the environment variables in terminal with CTRL+ALT+T you can use env command.



    for example :



    [raja@localhost ~]$ env
    XDG_VTNR=1
    SSH_AGENT_PID=3671
    XDG_SESSION_ID=3
    HOSTNAME=localhost.localdomain
    IMSETTINGS_INTEGRATE_DESKTOP=yes
    GPG_AGENT_INFO=/home/raja/.gnupg/S.gpg-agent:3691:1
    GLADE_PIXMAP_PATH=:
    TERM=xterm-256color
    SHELL=/bin/bash
    XDG_MENU_PREFIX=xfce-
    DESKTOP_STARTUP_ID=
    HISTSIZE=1000
    XDG_SESSION_COOKIE=0250277dd805498381e96c05d88068b0-1364679772.845276-1676152201
    WINDOWID=65011716
    GNOME_KEYRING_CONTROL=/home/raja/.cache/keyring-N3QoQ2
    IMSETTINGS_MODULE=none
    QT_GRAPHICSSYSTEM_CHECKED=1
    USER=raja


    etc.



    hope that helps.






    share|improve this answer





















    • I've noticed that env misses some variables o_O. specifically after sourcing a VAR=VAL file.
      – ThorSummoner
      Aug 2 '17 at 19:43






    • 1




      @ThorSummoner The answer here might help stackoverflow.com/questions/15474650/…
      – georaldc
      Aug 14 '17 at 17:48
















    11














    To list the environment variables in terminal with CTRL+ALT+T you can use env command.



    for example :



    [raja@localhost ~]$ env
    XDG_VTNR=1
    SSH_AGENT_PID=3671
    XDG_SESSION_ID=3
    HOSTNAME=localhost.localdomain
    IMSETTINGS_INTEGRATE_DESKTOP=yes
    GPG_AGENT_INFO=/home/raja/.gnupg/S.gpg-agent:3691:1
    GLADE_PIXMAP_PATH=:
    TERM=xterm-256color
    SHELL=/bin/bash
    XDG_MENU_PREFIX=xfce-
    DESKTOP_STARTUP_ID=
    HISTSIZE=1000
    XDG_SESSION_COOKIE=0250277dd805498381e96c05d88068b0-1364679772.845276-1676152201
    WINDOWID=65011716
    GNOME_KEYRING_CONTROL=/home/raja/.cache/keyring-N3QoQ2
    IMSETTINGS_MODULE=none
    QT_GRAPHICSSYSTEM_CHECKED=1
    USER=raja


    etc.



    hope that helps.






    share|improve this answer





















    • I've noticed that env misses some variables o_O. specifically after sourcing a VAR=VAL file.
      – ThorSummoner
      Aug 2 '17 at 19:43






    • 1




      @ThorSummoner The answer here might help stackoverflow.com/questions/15474650/…
      – georaldc
      Aug 14 '17 at 17:48














    11












    11








    11






    To list the environment variables in terminal with CTRL+ALT+T you can use env command.



    for example :



    [raja@localhost ~]$ env
    XDG_VTNR=1
    SSH_AGENT_PID=3671
    XDG_SESSION_ID=3
    HOSTNAME=localhost.localdomain
    IMSETTINGS_INTEGRATE_DESKTOP=yes
    GPG_AGENT_INFO=/home/raja/.gnupg/S.gpg-agent:3691:1
    GLADE_PIXMAP_PATH=:
    TERM=xterm-256color
    SHELL=/bin/bash
    XDG_MENU_PREFIX=xfce-
    DESKTOP_STARTUP_ID=
    HISTSIZE=1000
    XDG_SESSION_COOKIE=0250277dd805498381e96c05d88068b0-1364679772.845276-1676152201
    WINDOWID=65011716
    GNOME_KEYRING_CONTROL=/home/raja/.cache/keyring-N3QoQ2
    IMSETTINGS_MODULE=none
    QT_GRAPHICSSYSTEM_CHECKED=1
    USER=raja


    etc.



    hope that helps.






    share|improve this answer












    To list the environment variables in terminal with CTRL+ALT+T you can use env command.



    for example :



    [raja@localhost ~]$ env
    XDG_VTNR=1
    SSH_AGENT_PID=3671
    XDG_SESSION_ID=3
    HOSTNAME=localhost.localdomain
    IMSETTINGS_INTEGRATE_DESKTOP=yes
    GPG_AGENT_INFO=/home/raja/.gnupg/S.gpg-agent:3691:1
    GLADE_PIXMAP_PATH=:
    TERM=xterm-256color
    SHELL=/bin/bash
    XDG_MENU_PREFIX=xfce-
    DESKTOP_STARTUP_ID=
    HISTSIZE=1000
    XDG_SESSION_COOKIE=0250277dd805498381e96c05d88068b0-1364679772.845276-1676152201
    WINDOWID=65011716
    GNOME_KEYRING_CONTROL=/home/raja/.cache/keyring-N3QoQ2
    IMSETTINGS_MODULE=none
    QT_GRAPHICSSYSTEM_CHECKED=1
    USER=raja


    etc.



    hope that helps.







    share|improve this answer












    share|improve this answer



    share|improve this answer










    answered Mar 30 '13 at 16:41









    rɑːdʒɑ

    56.9k84216301




    56.9k84216301












    • I've noticed that env misses some variables o_O. specifically after sourcing a VAR=VAL file.
      – ThorSummoner
      Aug 2 '17 at 19:43






    • 1




      @ThorSummoner The answer here might help stackoverflow.com/questions/15474650/…
      – georaldc
      Aug 14 '17 at 17:48


















    • I've noticed that env misses some variables o_O. specifically after sourcing a VAR=VAL file.
      – ThorSummoner
      Aug 2 '17 at 19:43






    • 1




      @ThorSummoner The answer here might help stackoverflow.com/questions/15474650/…
      – georaldc
      Aug 14 '17 at 17:48
















    I've noticed that env misses some variables o_O. specifically after sourcing a VAR=VAL file.
    – ThorSummoner
    Aug 2 '17 at 19:43




    I've noticed that env misses some variables o_O. specifically after sourcing a VAR=VAL file.
    – ThorSummoner
    Aug 2 '17 at 19:43




    1




    1




    @ThorSummoner The answer here might help stackoverflow.com/questions/15474650/…
    – georaldc
    Aug 14 '17 at 17:48




    @ThorSummoner The answer here might help stackoverflow.com/questions/15474650/…
    – georaldc
    Aug 14 '17 at 17:48











    4














    In bash using compgen:



    compgen -v | while read line; do echo $line=${!line};done  





    share|improve this answer



















    • 1




      This should be the accepted answer, as all others list more than just the name itself. In my case some variables contain multiline values which makes the other solutions not feasable.
      – Mene
      Nov 9 '17 at 15:20










    • A variant: compgen -v | while read line; do declare -p $line; done
      – Eljay
      Dec 13 at 17:58
















    4














    In bash using compgen:



    compgen -v | while read line; do echo $line=${!line};done  





    share|improve this answer



















    • 1




      This should be the accepted answer, as all others list more than just the name itself. In my case some variables contain multiline values which makes the other solutions not feasable.
      – Mene
      Nov 9 '17 at 15:20










    • A variant: compgen -v | while read line; do declare -p $line; done
      – Eljay
      Dec 13 at 17:58














    4












    4








    4






    In bash using compgen:



    compgen -v | while read line; do echo $line=${!line};done  





    share|improve this answer














    In bash using compgen:



    compgen -v | while read line; do echo $line=${!line};done  






    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited Apr 11 '14 at 21:07









    Seth

    33.9k26110161




    33.9k26110161










    answered Apr 11 '14 at 20:53









    tmgoblin

    491




    491








    • 1




      This should be the accepted answer, as all others list more than just the name itself. In my case some variables contain multiline values which makes the other solutions not feasable.
      – Mene
      Nov 9 '17 at 15:20










    • A variant: compgen -v | while read line; do declare -p $line; done
      – Eljay
      Dec 13 at 17:58














    • 1




      This should be the accepted answer, as all others list more than just the name itself. In my case some variables contain multiline values which makes the other solutions not feasable.
      – Mene
      Nov 9 '17 at 15:20










    • A variant: compgen -v | while read line; do declare -p $line; done
      – Eljay
      Dec 13 at 17:58








    1




    1




    This should be the accepted answer, as all others list more than just the name itself. In my case some variables contain multiline values which makes the other solutions not feasable.
    – Mene
    Nov 9 '17 at 15:20




    This should be the accepted answer, as all others list more than just the name itself. In my case some variables contain multiline values which makes the other solutions not feasable.
    – Mene
    Nov 9 '17 at 15:20












    A variant: compgen -v | while read line; do declare -p $line; done
    – Eljay
    Dec 13 at 17:58




    A variant: compgen -v | while read line; do declare -p $line; done
    – Eljay
    Dec 13 at 17:58











    2














    env is a POSIX 7 way:



    export asdf=qwer
    env | grep asdf


    Sample output:



    asdf=qwer


    It only shows exported variables: non-exported variables are not usually considered "environment variables".



    Prefer that over printenv, which is not POSIX. Both seem to do the same thing without arguments: https://unix.stackexchange.com/questions/123473/what-is-the-difference-between-env-and-printenv






    share|improve this answer























    • Already mentioned two years ago: askubuntu.com/a/276162/158442
      – muru
      Nov 30 '15 at 15:00










    • @muru fair enough. Wish it had made env more visible with better formatting, and I've added more info.
      – Ciro Santilli 新疆改造中心 六四事件 法轮功
      Nov 30 '15 at 15:01










    • That's what editing is for.
      – muru
      Nov 30 '15 at 15:02
















    2














    env is a POSIX 7 way:



    export asdf=qwer
    env | grep asdf


    Sample output:



    asdf=qwer


    It only shows exported variables: non-exported variables are not usually considered "environment variables".



    Prefer that over printenv, which is not POSIX. Both seem to do the same thing without arguments: https://unix.stackexchange.com/questions/123473/what-is-the-difference-between-env-and-printenv






    share|improve this answer























    • Already mentioned two years ago: askubuntu.com/a/276162/158442
      – muru
      Nov 30 '15 at 15:00










    • @muru fair enough. Wish it had made env more visible with better formatting, and I've added more info.
      – Ciro Santilli 新疆改造中心 六四事件 法轮功
      Nov 30 '15 at 15:01










    • That's what editing is for.
      – muru
      Nov 30 '15 at 15:02














    2












    2








    2






    env is a POSIX 7 way:



    export asdf=qwer
    env | grep asdf


    Sample output:



    asdf=qwer


    It only shows exported variables: non-exported variables are not usually considered "environment variables".



    Prefer that over printenv, which is not POSIX. Both seem to do the same thing without arguments: https://unix.stackexchange.com/questions/123473/what-is-the-difference-between-env-and-printenv






    share|improve this answer














    env is a POSIX 7 way:



    export asdf=qwer
    env | grep asdf


    Sample output:



    asdf=qwer


    It only shows exported variables: non-exported variables are not usually considered "environment variables".



    Prefer that over printenv, which is not POSIX. Both seem to do the same thing without arguments: https://unix.stackexchange.com/questions/123473/what-is-the-difference-between-env-and-printenv







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited Apr 13 '17 at 12:37









    Community

    1




    1










    answered Nov 30 '15 at 14:31









    Ciro Santilli 新疆改造中心 六四事件 法轮功

    9,15444346




    9,15444346












    • Already mentioned two years ago: askubuntu.com/a/276162/158442
      – muru
      Nov 30 '15 at 15:00










    • @muru fair enough. Wish it had made env more visible with better formatting, and I've added more info.
      – Ciro Santilli 新疆改造中心 六四事件 法轮功
      Nov 30 '15 at 15:01










    • That's what editing is for.
      – muru
      Nov 30 '15 at 15:02


















    • Already mentioned two years ago: askubuntu.com/a/276162/158442
      – muru
      Nov 30 '15 at 15:00










    • @muru fair enough. Wish it had made env more visible with better formatting, and I've added more info.
      – Ciro Santilli 新疆改造中心 六四事件 法轮功
      Nov 30 '15 at 15:01










    • That's what editing is for.
      – muru
      Nov 30 '15 at 15:02
















    Already mentioned two years ago: askubuntu.com/a/276162/158442
    – muru
    Nov 30 '15 at 15:00




    Already mentioned two years ago: askubuntu.com/a/276162/158442
    – muru
    Nov 30 '15 at 15:00












    @muru fair enough. Wish it had made env more visible with better formatting, and I've added more info.
    – Ciro Santilli 新疆改造中心 六四事件 法轮功
    Nov 30 '15 at 15:01




    @muru fair enough. Wish it had made env more visible with better formatting, and I've added more info.
    – Ciro Santilli 新疆改造中心 六四事件 法轮功
    Nov 30 '15 at 15:01












    That's what editing is for.
    – muru
    Nov 30 '15 at 15:02




    That's what editing is for.
    – muru
    Nov 30 '15 at 15:02











    1














    If you want a specific environment variable, rather than printing them all with printenv, you can for example print it by doing echo "$PWD"






    share|improve this answer


























      1














      If you want a specific environment variable, rather than printing them all with printenv, you can for example print it by doing echo "$PWD"






      share|improve this answer
























        1












        1








        1






        If you want a specific environment variable, rather than printing them all with printenv, you can for example print it by doing echo "$PWD"






        share|improve this answer












        If you want a specific environment variable, rather than printing them all with printenv, you can for example print it by doing echo "$PWD"







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jan 8 at 14:13









        inigo333

        1113




        1113























            1














            Most solutions here either print only environment variables, or have the drawback that env or (set -o posix; posix) do not print values in parseable form (try to print variable A=$'arnb'...).



            Here is a function that will print all variables, one variable per line, in the POSIX escaped form:



            function dump_vars {
            local VARNAME
            compgen -v | while read -r VARNAME; do
            printf "$VARNAME=%qn" "${!VARNAME}"
            done
            }


            Thanks to @tmgoblin for pointing out the use of compgen -v.






            share|improve this answer





















            • Excellent first answer! +1 Keep up the good work!
              – Fabby
              Dec 15 at 16:29
















            1














            Most solutions here either print only environment variables, or have the drawback that env or (set -o posix; posix) do not print values in parseable form (try to print variable A=$'arnb'...).



            Here is a function that will print all variables, one variable per line, in the POSIX escaped form:



            function dump_vars {
            local VARNAME
            compgen -v | while read -r VARNAME; do
            printf "$VARNAME=%qn" "${!VARNAME}"
            done
            }


            Thanks to @tmgoblin for pointing out the use of compgen -v.






            share|improve this answer





















            • Excellent first answer! +1 Keep up the good work!
              – Fabby
              Dec 15 at 16:29














            1












            1








            1






            Most solutions here either print only environment variables, or have the drawback that env or (set -o posix; posix) do not print values in parseable form (try to print variable A=$'arnb'...).



            Here is a function that will print all variables, one variable per line, in the POSIX escaped form:



            function dump_vars {
            local VARNAME
            compgen -v | while read -r VARNAME; do
            printf "$VARNAME=%qn" "${!VARNAME}"
            done
            }


            Thanks to @tmgoblin for pointing out the use of compgen -v.






            share|improve this answer












            Most solutions here either print only environment variables, or have the drawback that env or (set -o posix; posix) do not print values in parseable form (try to print variable A=$'arnb'...).



            Here is a function that will print all variables, one variable per line, in the POSIX escaped form:



            function dump_vars {
            local VARNAME
            compgen -v | while read -r VARNAME; do
            printf "$VARNAME=%qn" "${!VARNAME}"
            done
            }


            Thanks to @tmgoblin for pointing out the use of compgen -v.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Dec 15 at 15:58









            Ján Lalinský

            1112




            1112












            • Excellent first answer! +1 Keep up the good work!
              – Fabby
              Dec 15 at 16:29


















            • Excellent first answer! +1 Keep up the good work!
              – Fabby
              Dec 15 at 16:29
















            Excellent first answer! +1 Keep up the good work!
            – Fabby
            Dec 15 at 16:29




            Excellent first answer! +1 Keep up the good work!
            – Fabby
            Dec 15 at 16:29


















            draft saved

            draft discarded




















































            Thanks for contributing an answer to Ask Ubuntu!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f275965%2fhow-to-list-all-variables-names-and-their-current-values%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            flock() on closed filehandle LOCK_FILE at /usr/bin/apt-mirror

            Mangá

            Eduardo VII do Reino Unido