加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读