LINUX.ORG.RU
ФорумTalks

бардак в переменных окружения

 , ,


0

2

посмотрел я тут на то, что у меня в PATH творится, и ужаснулся. Более того, ужаснулся тому, что средствами баша как-то неудобно этот бардак в порядок приводить. В итоге пришлось призвать питон для решения задачи добавления в и удаления из PATH, LD_LIBRARY_PATH и прочих похожих переменных всяких разных путей.

А как решают уважаемые спв эту проблему?

★★★★★

Для начала расскажи, что ты понимаешь под «бардаком в PATH» и как ты его сумел развести?

AX ★★★★★
()

еслиб некоторые линуксоиды были котами то у них бы блестели яйца, а так приходится вылизывать переменные окружения

Deleted
()

В итоге пришлось призвать питон для решения задачи добавления в и удаления

/etc/profile.d не смотрел?

crowbar
()
[ RADDyomin@Gentoo-TD ] - /home/princess-cadance - [ 17:45 ]  
> cat .zshrc | grep PATH
export PATH=/usr/local/bin:/usr/bin:/bin:/opt/bin:/usr/i486-pc-linux-gnu/gcc-bin/4.9.2:/mnt/prog

Вот так.

DeadEye ★★★★★
()

А как решают уважаемые спв эту проблему?

просим сделать это поттеринга

xsektorx ★★★
()
Ответ на: комментарий от AX

ну бардак получить очень легко. Есть, например, xilinx ise и actel libero, и в том и в другом есть утилита coregen. В том же libero есть modelsim ae, с утилитой vdir, конфликтующей с такой же из coreutils.

Кроме того, иногда желательно уметь из path что-то выборочно удалить. Все это разруливать средствами баша — сложно.

demidrol ★★★★★
() автор топика
Ответ на: комментарий от demidrol

Все это разруливать средствами баша — сложно.

Я даже стесняюсь предположить, что там у тебя сложного. Покажи что ты там накодил в итоге

zolden ★★★★★
()
Ответ на: комментарий от zolden
#!/usr/bin/env python2

import os, sys
import argparse

class Path:
    def __init__(self, env = 'PATH'):
        try:
            path = os.environ[env].split(os.path.pathsep)
            path = map(os.path.normpath, path)
            path = filter(os.path.exists, path)
        except KeyError:
            path = []
        self.path = path
        self.env  = env
    
    def prepend(self, item):
        if item in self.path:
            return
        if not os.path.isdir(item):
            return
        self.path.insert(0, item)

    def delete(self, item):
        if item in self.path:
            self.path.remove(item)

    def __repr__(self):
        return 'export %s=%s' % (self.env, os.path.pathsep.join(self.path))


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-a", "--add", nargs = '+', metavar = "PATH", help = "add item to PATH")
    parser.add_argument("-d", "--delete", nargs = '+', metavar = "PATH", help = "delete item from PATH")
    parser.add_argument("-e", "--env", nargs = 1, metavar = "PATH", help = "specify environment variable")
    opts, aux = parser.parse_known_args(sys.argv[1:])
   
    if not opts.env:
        p = Path()
    else:
        p = Path(opts.env[0])

    if opts.add:
        for a in opts.add:
            a = os.path.normpath(a)
            p.prepend(os.path.normpath(a))

    if opts.delete:
        for d in opts.delete:
            if d:
                p.delete(d)
    
    print p

demidrol ★★★★★
() автор топика
Ответ на: комментарий от demidrol

у нас в zsh этот велосипед не котируется, у нас есть vared

zolden ★★★★★
()

А как решают уважаемые спв эту проблему?

для начала разберись, как ТЫ этот бардак создал.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.