鱼C论坛

 找回密码
 立即注册
查看: 1216|回复: 11

linux环境变量设置

[复制链接]
发表于 2021-12-20 15:05:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
怎么用python设置如下类型的环境变量

[cjianjun@login-server run]$ export a=(a b c d)
[cjianjun@login-server run]$ echo ${a[0]}
a
[cjianjun@login-server run]$ echo ${a[1]}
b
[cjianjun@login-server run]$ echo ${a[2]}
c
[cjianjun@login-server run]$ echo ${a[3]}
d

多谢各位路过的大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-20 15:09:56 | 显示全部楼层
自己搜索:如何 用Python执行Linux命令
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-20 15:19:32 | 显示全部楼层
阿奇_o 发表于 2021-12-20 15:09
自己搜索:如何 用Python执行Linux命令

不只是单纯的执行,环境变量的值需要是python的一个队列
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-20 15:34:09 | 显示全部楼层
ICJJ 发表于 2021-12-20 15:19
不只是单纯的执行,环境变量的值需要是python的一个队列

什么"队列"?你是指 python的列表? 还是说要自己创建一个算法上所指的"队列"?  

单纯,还是单行/多行?   不是"单纯的执行"? 计算机说:我只会单纯的执行。。

ps: 最好把问题说清楚点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-20 15:40:20 | 显示全部楼层
阿奇_o 发表于 2021-12-20 15:34
什么"队列"?你是指 python的列表? 还是说要自己创建一个算法上所指的"队列"?  

单纯,还是单行/多 ...

对不起啊,是列表,不是对列,搞混了
就是一个环境变量会有多个值,这些值是由列表提供的。
举例来说,设置的环境变量要是这样的:
     export a=(a b c d)
使用的时候可以这样使用:
$ echo ${a[0]}
a
$ echo ${a[1]}
b
$ echo ${a[2]}
c
$ echo ${a[3]}
d
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-20 17:28:36 | 显示全部楼层
找到方法了,具体实施如下
   def set_test_dir_environ(self,value):
        self.value = value
        value_tmp = [str(i) for i in value.list]
        value_str = ' '.join(value_tmp)
        set_cmd = 'export test_dir=' + '(' + value_str + ')'
#        import pdb
#        pdb.set_trace()
        os.system('ls')
        os.system(set_cmd)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-20 17:57:33 | 显示全部楼层
本帖最后由 阿奇_o 于 2021-12-20 18:17 编辑
ICJJ 发表于 2021-12-20 15:40
对不起啊,是列表,不是对列,搞混了
就是一个环境变量会有多个值,这些值是由列表提供的。
...


那意思就是:把python的一个列表变成Linux系统的一个环境变量,对吧?
嗯,一开始,我想会比较简单,但实际上比较麻烦,还涉及复杂的线程问题。
#!/usr/bin/python3
import os

# 方法一:不行

# 方法二:不行

# 方法三:不行

# 方法四:当前线程内,可行。
os.environ['test_var'] = '(a b c)'
os.system('echo ${test_var}')    # 其实是 字符串
os.system('echo ${test_var
  • }') # 同上 os.system('echo ${test_var[2]}') # 不是Shell数组;并已是另一线程,test_var已失效。 print("----当前线程内,定义一个数组,并在当前线程内使用------") lis=['a', 'b', 'c', 'd', 'e'] str_list=' '.join(lis) os.system('read -a myArr <<< "%s"; echo ${myArr
  • }; echo ${myArr[2]}'                              % str_list)  # 当前线程内,定义一个数组;并使用。 # 或                              # os.system('export my_env=%s; echo ${my_env
  • }; echo ${my_env[2]}' % ('(' + str_list + ')') ) os.system('echo ${myArr[2]}')         # 另一个线程了,myArr 已无效。 # 方法五:允许其他线程(全局环境变量),过于繁琐(我就不搞了) …… # 最后发现是你的需求是不是有问题,为什么要转为Shell的数组呢,这些并不是它擅长的呀。 # 若真的需要,还是考虑"持久化"吧,或写到一个文件里。
  • 想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2021-12-21 13:14:05 | 显示全部楼层
    这种方法也是不行,只能设置临时变量,无法设置永久变量,即离开python之后依然可以生效
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复 支持 反对

    使用道具 举报

    发表于 2021-12-21 13:19:20 From FishC Mobile | 显示全部楼层
    ICJJ 发表于 2021-12-21 13:14
    这种方法也是不行,只能设置临时变量,无法设置永久变量,即离开python之后依然可以生效

    设置永久生效的要编辑配置文件~/.bashrc,把环境变量添加到最后一行,保存后source ~/.bashrc立即生效。
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2021-12-21 15:27:17 | 显示全部楼层
    hrpzcf 发表于 2021-12-21 13:19
    设置永久生效的要编辑配置文件~/.bashrc,把环境变量添加到最后一行,保存后source ~/.bashrc立即生效。

    环境变量的值是python运行的中间结果,请看一下楼上几层的内容,谢谢
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2021-12-21 15:28:49 | 显示全部楼层
    hrpzcf 发表于 2021-12-21 13:19
    设置永久生效的要编辑配置文件~/.bashrc,把环境变量添加到最后一行,保存后source ~/.bashrc立即生效。

    6楼就是大概的结果,只是system设置的不是永久环境变量,目前要解决的点也就是这个永久的问题
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复 支持 反对

    使用道具 举报

    发表于 2021-12-21 15:40:41 | 显示全部楼层
    ICJJ 发表于 2021-12-21 15:28
    6楼就是大概的结果,只是system设置的不是永久环境变量,目前要解决的点也就是这个永久的问题

    value是什么value.list又是什么,你不说清楚value和value.list类型及结构很难跟你对接啊
    想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

    GMT+8, 2025-1-12 16:11

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表