Being inherently lazy, I am always a sucker for shortcuts, neat tricks to cut my work and, most important, not to do the same thing again and again. Here is a tip I find useful.
Have you ever been frustrated to find that some line has changed some important shell variable such as ORACLE_BASE inside a shell script? The list of variables that are important to safety and efficiency of your shell is a long one - PS1, ORACLE_BASE, PATH, and so on. Using this little known command, you can easily "protect" a variable. The trick is to make it readonly. First, set the variable:
# export ORACLE_BASE=/opt/oracle
Then make it readonly:
# readonly ORACLE_BASE
Now if you want to set it:
# export ORACLE_BASE=/opt/oracle1
-bash: ORACLE_BASE: readonly variable
You can't. You can't even unset the variable:
# unset ORACLE_BASE
-bash: unset: ORACLE_BASE: cannot unset: readonly variable
This is a cool way to protect important variables.
To get a list of variables that are readonly, use
# declare -r
declare -ar BASH_VERSINFO='([0]="3" [1]="00" [2]="15" [3]="1" [4]="release" [5]="i386-redhat-linux-gnu")'
declare -ir EUID="500"
declare -rx ORACLE_BASE="/opt/oracle"
declare -ir PPID="13204"
declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"
declare -ir UID="500"
Unfortunately there is no comamnd to make it readwrite.
In the same way, you can also prevent a specific variable not to be set. LD_LIBRARY_PATH should not be set during some type of installations. To force it that way:
# export LD_LIBRARY_PATH
# readonly LD_LIBRARY_PATH
Now if you want to assign a value:
# export LD_LIBRARY_PATH=d
-bash: LD_LIBRARY_PATH: readonly variable
You will not be able to. You can also achieve the same goal by:
# declare -r LD_LIBRARY_PATH=
I hope you find it useful.
Confessions of an Oracle Database Junkie - Arup Nanda The opinions expressed here are mine and mine alone. They may not necessarily reflect that of my employers and customers - both past or present. The comments left by the reviewers are theirs alone and may not reflect my opinion whether implied or not. None of the advice is warranted to be free of errors and ommision. Please use at your own risk and after thorough testing in your environment.
Showing posts with label Linux shell variable readonly arup nanda ACE. Show all posts
Showing posts with label Linux shell variable readonly arup nanda ACE. Show all posts
Monday, January 19, 2009
Subscribe to:
Posts (Atom)