Как я создаю средство запуска приложения GUI для xfce4-терминала с рыбой, но наследованием переменных среды от удара?

У меня есть та же проблема. в Странице справочника/etc/network/interfaces говорится для dhcp метода:

hwaddress class address

Аппаратный адрес. класс является одним из эфира, ax25, адрес ARCnet или netrom. зависит от этого выбора.

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

4
16.05.2016, 03:31
4 ответа

Когда удар будет выполнен как неинтерактивная оболочка, он не получит .bashrc файл и если Вы используете менеджера по графическому дисплею затем оболочка входа в систему, используемая для выполнения команд средства запуска GUI, возможно, не получил .profile файл. Таким образом командам, выполненным с помощью средства запуска GUI, нельзя было бы установить желаемые переменные среды, когда выполнено.

Обходное решение, которое я нашел, должно было сказать, что эмулятор терминала для выполнения избивает интерактивный режим (с флагом-i) и затем сразу выполняет рыбу в нем:

xfce4-terminal -e 'bash -i -c fish'
5
27.01.2020, 20:50
  • 1
    Это брало путь к долго для выяснения, таким образом, я предполагаю, что мог бы также записать его, прежде чем я забуду это. Это также чувствует очень hacky так интересно, существует ли лучший способ пойти в нем... –  hugomg 14.01.2014, 23:02

То, что происходит, когда Вы запускаетесь от панели GUI, является дочерними процессами, получают среду от этого, и это обычно не получает Ваш удар интерактивные сценарии. Таким образом, экспортируемые переменные не присутствуют в программах, запущенных от GUI.

То, что можно сделать, изменяют сценарий запуска GUI для определения источника нового файла, который определяет эти переменные.

То, что я делаю, помещается все экспортируемые переменные в отдельном файле, который получен от ~/.bash_profile или ~/.zlogin (для zsh), который я называю ~/.environ.

Записи в качестве примера в этом файле:

PATH=${PATH}:$HOME/bin:$HOME/.local/bin:/usr/games/bin
export SSH_ASKPASS=/usr/bin/x11-ssh-askpass

Для GUI теперь необходимо изменить тот сценарий запуска.

Xfce предпочтет Ваш персональный xinitrc, поэтому сначала сделает это:

cp /etc/xdg/xfce4/xinitrc ~/.config/xfce4/xinitrc

Затем отредактируйте эту копию и добавьте эту строку:

source $HOME/.environ

Я добавляю его непосредственно перед тем, как xfce4-сессия запускает строку. Теперь средство запуска GUI будет иметь те же экспортируемые переменные как любая оболочка. Что-либо запустилось от него, наследует их, как будто запущенный от сессии оболочки.

2
27.01.2020, 20:50

Исключите файлы конфигурации чтения

Я полагаю, что Вы могли также сделать это использование просто /bin/sh вместо этого или даже bash без любых считанных конфигурационных файлов.

Примеры

$ xfce4-terminal -e '/bin/sh -c fish'
$ xfce4-terminal -e 'bash -norc -c fish'

Включайте файлы конфигурации чтения

Если Вы - цель, должен заставить Bash читать эти переменные и затем запускаться fish можно изменить переключение немного.

$ xfce4-terminal -e '/bin/sh -i -c fish'

Или используйте технику, которую Вы упомянули в своем ответе.

$ xfce4-terminal -e 'bash -i -c fish'

Отладка подсказки

Можно также отладить то, что продолжается при помощи strace видеть, какие файлы читаются при вызове оболочек в терминале xfce4.

$ xfce4-terminal -e 'strace -o strace.log /bin/sh -c fish'

Если Вы grep через получающееся strace.log файл Вы не должны видеть упоминание о конфигурационных файлах, которые Вы стараетесь не читать.

1
27.01.2020, 20:50
  • 1
    ну, я на самом деле пытаюсь прочитать конфигурации вместо того, чтобы избежать их так, Ваши предложения немного назад. Но использование strace для отладки не было чем-то, что пришло в мою голову. –  hugomg 15.01.2014, 01:05
  • 2
    @missingno - извините, о котором, я неправильно читал то, что Вы спрашивали в 1-м абзаце. Я добавил противостоящий метод, который похож Вашему, но использованию /bin/sh. Также добавленный Ваш метод только для полноты и связанный с Вашим A, таким образом, Вы не думаете, что я пытаюсь украсть Ваш гром. Только пытаюсь обеспечить более исчерпывающий A. 8-) –  slm♦ 15.01.2014, 01:19

Решение

...
Exec=bash -i -c "/home/mozes/dev/sqldeveloper/sqldeveloper.sh"
...

Объяснение

" -i Если присутствует опция -i, оболочка является интерактивной."

Example XFCE launcher полагается на переменные окружения из

~/.bashrc

для предоставления информации SQLDeveloper, чтобы он мог найти псевдонимы TNS Listener в tnsnames.ora

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME

XFCE launcher:

[Desktop Entry]
Version=1.0
Type=Application
Name=Oracle SQLDeveloper
Comment=
Exec=bash -i -c "/home/mozes/dev/sqldeveloper/sqldeveloper.sh"
Icon=/home/mozes/dev/sqldeveloper/icon.png
Path=
Terminal=false
StartupNotify=false
0
27.01.2020, 20:50

Теги

Похожие вопросы