首页 > 其他分享 >fish 复用 .bash_profile 里的环境变量

fish 复用 .bash_profile 里的环境变量

时间:2023-12-06 13:57:43浏览次数:24  
标签:profile case set fish value echo eval var bash

vim ~/.config/fish/config.fish

添加以下代码

# REUSE ENVIRONMENT VARIABLES FROM ~/.bash_profile
bash -c '. ~/.bash_profile; env' | while read e
    set var (echo $e | sed -E "s/([a-zA-Z0-9_]+)=(.*)\$/\1/")
    set value (echo $e | sed -E "s/([a-zA-Z0-9_]+)=(.*)\$/\2/")

    # remove surrounding quotes if existing
    set value (echo $value | sed -E "s/^\"(.*)\"\$/\1/")

    if test $var = "PATH"
        # replace ":" by spaces. this is how PATH looks for Fish
        set value (echo $value | sed -E "s/:/ /g")

        # use eval because we need to expand the value
        eval set -xg $var $value

        continue
    end

    # evaluate variables. we can use eval because we most likely just used "$var"
    set value (eval echo $value)

    #echo "set -xg '$var' '$value' (via '$e')"

    switch $value
        case '`*`';
            # executable
            set NO_QUOTES (echo $value | sed -E "s/^\`(.*)\`\$/\1/")
            set -x $var (eval $NO_QUOTES)
        case '*'
            # default
            switch $var
                case 'PWD'
                case 'SHLVL'
                case '_'
                case '*'
                    eval set -xg $var $value
            end
        end
end

标签:profile,case,set,fish,value,echo,eval,var,bash
From: https://www.cnblogs.com/hangj/p/17879327.html

相关文章

  • 对bash脚本增加tab自动补全
    需求高频使用自编benchmark工具,希望能像原生命令一样tab补全。要求:能够针对-s补全指定数据集名称能够针对-b补全分支名称(基于本地git仓库)能够补全-d-e-q等普通参数实现依赖常见Linux发行版都内置了自动补全的依赖,以Ubuntu默认shellbash为例如无法自动补全需要手动......
  • SAP ABAP RZ11 事务码里 Instance Profile 和 Current Value 等参数值的解读
    首先,让我们了解在SAPABAP系统中通过事务码RZ11查看参数时,涉及的四个重要组件:KernelDefault、DefaultProfile、InstanceProfile和CurrentValue。KernelDefault:含义:KernelDefault表示系统中SAP内核(Kernel)的默认配置参数值。这是SAP系统内核的全局默认设置,通常在SAP系统......
  • uniapp关于uni.getUserProfile的使用
    点击查看代码 <button@click="getMy"data-eventsync="true">获取信息</button> letgetMy=()=>{ if(uni.getUserProfile){ console.log('可以用'); uni.getUserProfile({ lang:'zh_CN', desc:'......
  • 解决WritePrivateProfileString写中文字符乱码问题
    使用WritePrivateProfileString写ini文件,在中文操作系统下写中文,没有问题,在俄文操作系统下,中文乱码。由于工程是Unicode,因此实际调用的是WritePrivateProfileStringW,而非WritePrivateProfileStringA。但是查看ini文件,发现是ANSI编码。查阅MSDN,发现有一句话:Ifthefilewascreat......
  • SQL Server Profiler基础使用
     一、简介一个图形界面工具,用于创建和管理跟踪并分析和重播跟踪结果 二、如何打开1、直接打开 2、MicrosoftSQLServerManagementStudio工具栏打开  三、配置跟踪如过滤出本机电脑执行的sql脚本 跟踪属性常规配置   找计算机名称  ......
  • Save the Fish
    SavetheFishisachallengingandfuncasualpuzzlegame.Inthegame,youwillplayasabraveadventurer,helpingthecutelittlefishsolvethewatershortagecrisisandstrivingtosuccessfullydeliverthewatersourcetothepipelinewherethefish......
  • bash: conda: command not found...
    服务器集群的奇奇怪怪问题总能被我碰到是slurm集群,出现的问题是,我shAnaconda3-2022.10-Linux-x86_64.sh之后,正打算创建环境,然后出现下面的问题bash:conda:commandnotfound...解决办法:1.查看安装路径echo$PATH2.发现有一串长长的地址,就想着要不试试刷新一下路径sourc......
  • P5867 [SEERC2018] Fishermen(暂无评定) 题解
    题意有\(n\)条鱼,\(m\)个渔夫,且这\(m\)个渔夫都在横坐标轴上,每个渔夫都有一个长度为\(l\)的鱼竿,当鱼和渔夫距离小于或等于\(l\)时,鱼能被钓到。并且渔夫\((x,0)\)与鱼\((a,b)\)的距离(假设为\(L\))满足如下公式\(|a−x|+b\)式子中\(x\)为渔夫的横坐标,\((a,b)......
  • 无涯教程-Ruby Profiler −函数
    在大多数情况下,您可以通过消除瓶颈来提高慢速程序的性能。探查器是找到瓶颈的工具。为了向您的Ruby程序添加配置文件,您需要首先使用命令行options-rprofile加载Profile库。使用语法$ruby-rprofile[programfile][arguments]Example这是从hello.rb文件生成的输......
  • 随机产生n个数的排列(Fisher-Yates洗牌算法)
    #include<bits/stdc++.h>usingnamespacestd;constintN=1e5+10;inta[N];//Fisher-Yates洗牌算法voidshuffle(intn){srand(time(NULL));for(inti=n;i>1;i--){intj=rand()%i+1;swap(a[i],a[j]);}......