如何在bash中引用一个csh脚本来设置环境
发布时间:2020-12-15 19:07:54 所属栏目:安全 来源:网络整理
导读:我们有Oracle在Solaris上运行,shell是默认的csh。所以登录脚本也会在csh中设置oracle_home,oracle_sid。但是我不喜欢csh,想用bash来做我的工作。那么如何在bash中获取csh登录脚本? 例如,以下是.cshrc文件中的内容。当使用bash时,我想使用这些变量。一
我们有Oracle在Solaris上运行,shell是默认的csh。所以登录脚本也会在csh中设置oracle_home,oracle_sid。但是我不喜欢csh,想用bash来做我的工作。那么如何在bash中获取csh登录脚本?
例如,以下是.cshrc文件中的内容。当使用bash时,我想使用这些变量。一种方法是再次复制变量并使用bash命令,例如导出ORACLE_SID = TEST。但这样做将需要我们维护两个文件副本。当我们更改数据库名称或升级数据库时,我需要单独维护bash登录文件。很高兴使用类似的东西 来源.cshr在bash,但它不工作。 setenv ORACLE_SID TEST setenv ORACLE_HOME /oracle/TEST/home/products/10204 setenv EPC_DISABLED TRUE setenv MANPATH /usr/local/man:/usr/share/man setenv EDITOR vi setenv LD_LIBRARY_PATH $ORACLE_HOME/lib:/usr/sfw/lib/64 setenv NLS_LANG AMERICAN_AMERICA.UTF8 setenv NLS_DATE_FORMAT "DD-MON-RR"
在?/ .bashrc(或?/ .bash_profile,?/ .bash_login和?/ .profile中存在的第一个)使用类似的东西来源代码。 ?/斌/ sourcecsh:
#!/bin/bash # This should be sourced rather than executed while read cmd var val do if [[ $cmd == "setenv" ]] then eval "export $var=$val" fi done < ~/.cshrc 这个版本消除了evil eval: #!/bin/bash # This should be sourced rather than executed # yes,it will be sourcing within sourcing - what so(u)rcery! source /dev/stdin < <( while read cmd var val do if [[ $cmd == "setenv" ]] then echo "export $var=$val" fi done < cshrc ) 编辑: 没有采购stdin: while read cmd var val do if [[ $cmd == "setenv" ]] then declare -x "$var=$val" fi done < cshrc (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |