Экран - наследовал среду текущего окна

Добавьте следующее к Вашему ~/.Xmodmap файл:

keycode 66 = Escape NoSymbol Escape
clear Lock

Посмотрите, что Повторно отображающаяся Caps Lock с xmodmap не работает на объяснения.

Выполненный xmodmap - <~/.Xmodmap применить Ваши изменения сразу. Они будут применены автоматически, когда Вы войдете в систему в будущем.

(Между прочим, это по существу, что продолжается под капотом в RHEL 6, который является, по-видимому, где Вы получили требование этой функции в RHEL 5. Это - то, что я подразумевал под своим удаленным комментарием, что этот материал был закреплен за годы до этого. Все, что они сделали, помещается немного глазури GUI сверху древнего механизма.)

3
19.09.2013, 01:44
2 ответа

При установке переменных среды на одном экране (скажите, что рабочий удар), и затем открывают новый экран, это - отдельный процесс удара и поэтому уже не возьмет среду на отдельном рабочая оболочка удара. Быстрое исправление для обхождения проблемы было бы:

env TERMCAP= env | sed -r 's/^(\w+)=(.*)$/\1="\2"/' > env.sh

затем, после того как у Вас есть Ctrlac для получения новой оболочки, Вы можете затем

source env.sh

Это - hacky, и я использую env TERMCAP= env потому что переменная среды TERMCAP является мультилинией и делает sed намного более сложный. Это не симпатично, но это работает :)

Можно хотеть изменить его, чтобы сделать:

env TERMCAP= env | sed -r 's/^(\w+)=(.*)$/export \1="\2"/' > env.sh

Таким образом, переменные также экспортируются.

5
27.01.2020, 21:16
  • 1
    Да это было единственным способом, которым я мог забеременеть выполнения его также. Я думаю, что Вы могли потенциально сделать a bash --rcfile env.sh также. –  slm♦ 10.09.2013, 14:16
  • 2
    Спасибо за обходное решение я голосовал за него, но не отмечу его как ответ, потому что я искал что-то меньше hacky. –  ricab 10.09.2013, 16:37
  • 3
    @DravSloan, это не работает, если существуют функции в Вашей среде: Вы заканчиваете тем, что получили материал как fn="() {function body" в Вашем env.sh. Также не работает, если у Вас есть переменная с символом "в значении. –  ricab 10.09.2013, 17:16
  • 4
    env должны только сообщить настройки переменной среды, set сообщили бы функции, и sed был установлен искать слово \w+ связанный с началом строки ^ сопровождаемый a =, таким образом, это не было должно произведенных функций. Но я понимаю, что это был в значительной степени "быстрый взлом", я не уверен, найдете ли Вы решение, хотя :( –  Drav Sloan 10.09.2013, 18:24
  • 5
    @DravSloan, спасибо так или иначе. Относительно функций в среде это вызвано тем, что я экспортировал их (можно проверить поведение с test() { echo test; } ; export -f test ; env | grep test). BTW, отметьте меня, если Вы отвечаете здесь, иначе я не предупрежден (Ваше сообщение) –  ricab 11.09.2013, 13:41

Экспортированные переменные, как показано env, должны автоматически наследоваться вашим новым screen.

Однако локальные переменные, которые вы определили в своей оболочке перед запуском screen, но которые вы не экспортировали, не будут существовать в сеансе экрана.

В зависимости от того, как вы называете свои переменные, вы можете использовать что-то подобное в Bash, чтобы получить удобочитаемый список:

(set -o posix ; set) | egrep -v '^(_.*|[A-Z0-9_]+)='

setсам по себе также содержит множество функций.

(set -o posix ; set)перечислит только переменные, но в этом списке есть масса системных переменных.

egrep -v '^(_.*|[A-Z0-9_]+)='отфильтровывает все переменные, имя которых начинается с символа подчеркивания, а также все те, которые состоят только из заглавных букв, цифр и символов подчеркивания. Это должно избавиться от большинства системных переменных.

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

Конечно, это полезно только в том случае, если у вас есть много переменных, которые вы забыли экспортировать, но вы не забыли проверить их перед запуском экрана...

0
27.01.2020, 21:16

Теги

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