LINUX.ORG.RU

Как установить переменную среды для эмулятора терминала

 ,


0

1

Главный герои - mate и её эмулятор терминала mate-terminal. Если я в нем наберу

$TEST=1 mate-terminal
то в открывшемся окне могу сделать следующее
$echo $TEST
и увижу единичку. Так вот меня интересует, как задать переменную среду ТОЛЬКО для эмулятора терминала (чтоб она автоматически задавалась при каждом его запуске, поэтому .bashrc и .bash_profile - просьба не предлагать)? Различные игрища с настройками кнопки запуска, вроде добавления
TEST=1 mate-terminal
в поле запускаемой команды толку не дали - оно жаловалось, что не знает что такое TEST. То же самое было и для настроек профиля с настройкой «Run a custom comman instead of my shell»

★★★

посмотри в настройке терминала, ну а верный вариант(смотря для чего это нужно), создать скрипт запуска, и к нему ярлык для десктопа, если нужно. По конкретней задачу опиши!

kickass
()

ты не для терминала эти единички устанавливаешь, а для твоего интерпретатора. ну скорее всего у тебя bash.
и тебе нужно, чтобы для нового инстанса баша, вот лично для него, mate-terminal устанавливал переменные. потому, что именно mate-terminal этот инстанс баша и запускает.
если он такого не умеет, я бы забил.

system-root ★★★★★
()
Ответ на: комментарий от system-root

Умеет. В настройках есть «запускать команду» (ну вместо обычного баша). Вот там можно прямо и написать.

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

Пишу туда команду

export TEST=1; mate-terminal
Получаю при запуске
Failed to execute child process "export" (No such file or directory)

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

правильно получаешь. потому что export не программа в /bin или еще где-то.

mos ★★☆☆☆
()
Ответ на: комментарий от LIKAN

вообще ты всё неправильно пишешь.

mos ★★☆☆☆
()

.bashrc и .bash_profile - просьба не предлагать

Почему?

$ cat /proc/$PPID/cmdline
mate-terminal

Можешь из .bashrc детектить mate-terminal.

anonymous
()
Ответ на: комментарий от mos

Так, немного более сложная задача. Мне нужна модификация PATH, работающая только на эмулятор терминала. Таким образом мне сначала надо узнать что в этом PATH находится в данный момент Всякая дрянь вроде

env TEST=$PATH bash
и даже
env TEST=`printenv PATH` bash
Мне не помогла.

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

Path=«$path:/additional/path»

К эмуляторам терминалам и прлчим енвам и тестам это отношения не имеет. Так дюбые переменные задаются.
Может тебе уже стоит скачать самоучитель линакс для начинающих?

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

Ты невнимательно прочел мой комментарий. Если указывать строку

env TEST=$PATH bash
Знак в настроках терминала (sic! а не просто в консольке) $ не возвращает значения переменной и в терминале ты (ВНЕЗАПНО) увидишь
echo $TEST
$PATH

LIKAN ★★★
() автор топика
Последнее исправление: LIKAN (всего исправлений: 1)
Ответ на: комментарий от kostik87

Окей, а если я хочу сделать такое

env test=$PATH mater-terminal
В настройках кнопки $ не имеет своей волшебной силы и в test будет буквально «$PATH»

LIKAN ★★★
() автор топика
Ответ на: комментарий от LIKAN
if grep --quiet mate-terminal /proc/$PPID/cmdline ; then
    # мы запущены в mate-terminal
    # сюда писать что нужно при этом делать
fi
anonymous
()

Может ты просто будешь bash с альтернативным конфигом через --rcfile запускать ?

Я думаю можно твой терминал запускать даже без его настроек через

%терминал% -e "bash --rcfile %друго_конфиг_с_переменными_среды%"

Dred ★★★★★
()
Последнее исправление: Dred (всего исправлений: 2)
Ответ на: комментарий от LIKAN

Без порождения подпроцесса (grep)

read < /proc/$PPID/cmdline
if [[ $REPLY == mate-terminal ]] ; then
    ...
fi

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