У меня возникла проблема с Cygwin
, относящаяся к XTerm.exe
сеансам, не загружая BASH
конфигурационный файл (ы).Могу ли я заставить XTerm.exe по умолчанию использовать BASH-оболочку и другие оболочки без входа в Cygwin для загрузки ~/.bashrc?
Для начала, мой .startxwinrc
является:
#!/bin/sh
xrdb -merge ~/.Xresources
xterm -geometry +0+60 -ls &
xterm -geometry +0-100 &
exec xclock
... и мой .Xresources является:
Xft*antialias: true
Xft*autohint: true
XTerm*background: white
XTerm*foreground: black
XTerm*cursorColor: orchid
XTerm*fullCursor: true
XTerm*reverseVideo: false
XTerm*geometry: 80x40
XTerm*scrollBar: true
XTerm*rightScrollBar: true
XTerm*scrollTtyOutput: off
XTerm*scrollKey: on
XTerm*reverseWrap: true
XTerm*saveLines: 10000
XTerm*faceName: BitStream Vera Sans Mono
XTerm*faceSize: 12
XTerm*toolBar: off
XTerm*VT100.Translations: #override\n\
<Key>BackSpace: string(0x7F)\n\
<Key>Delete: string("\033[3~")\n\
<Key>Home: string("\033[1~")\n\
<Key>End: string("\033[4~")\n\
<KeyPress>Prior : scroll-back(1,page)\n\
<KeyPress>Next : scroll-forw(1,page)
Я начинаю свой X-сервер, как:
startxwin &
И I см. приведенные выше конфигурации. Я получаю два окна XTerm
и xclock
(d цвет и прокрутка и т. д. соответствуют моим спецификациям).
Но любопытно, что запрос терминала не является тем, что я установил в своем конфигурационном файле ~/.bashrc
.
Сначала я думал, что мой вопрос был связан с этими вопросами:
Why is my .bashrc not read under cygwin?
Cygwin shell doesn't execute .bashrc
... которые предполагают вопрос в том, что фактические параметры конфигурации загружаются из ~/.profile
или ~/.bash_profile
, возможно. Но добавление ничего не сделало.
Чтобы проверить, что они не были запущены я добавил строку, как это для каждого из файлов конфигурации три Баш (.bashrc
, .bash_profile
и .profile
) в моем домашнем каталоге:
echo "**** EXECUTING /home/JasonMick/.bash_profile *****" | \
tee -a /tmp/shell.log
Файл никогда не пишется ... так ясно, что эти файлы никогда не касаются.
Далее я подтвердил, что в моих переменных среды Windows нет переменной «HOME» (что может быть источником таких проблем). Не было такой переменной, поэтому я был в порядке.
Далее я проверить некоторые основные вещи о состоянии оболочки, используя ...
printf '%s\n' $SHELL $HOME $USER
Результаты для XTerm являются:
/бен/Баш
/дома/JasonMick
JasonMick
Эти результаты соответствуют идентичным результатам той же команды ex ecued в терминале X11
не mintty
(который я обычно использую для запуска startxwin
). Однако, когда я открываю новый mintty
, подсказка верна в соответствии с настройками в моем домашнем каталоге .bashrc
.
Чтобы быть в безопасности, я искал .profile
, .bashrc
и .bash_profile
файлов в /etc/
.Я нашел следующие файлы:
/etc/profile
/etc/bash.bashrc
/etc/skel/.bashrc
/etc/skel/.bash_profile
/etc/defaults/etc/skel/.bashrc
/etc/defaults/etc/skel/.bash_profile
/etc/defaults/etc/bash.bashrc
/etc/defaults/etc/profile
Я добавил принты всем из них.
В mintty Я, /etc/shell.log файл получает следующие команды:
**** ИСПОЛНЕНИЯ/и т.д./профиль ****
**** ИСПОЛНЕНИЯ/и т.д./Баш .bashrc *****
**** ИСПОЛНЕНИЯ /home/JasonMick/.bash_profile *****
... так что, как представляется, вызывая /etc/
файлы, а затем, наконец, вызывая .bash_profile
в моем домашнем каталоге, автоматически, без каких-либо вызовов источника от /etc/
расположенных файлов конфигурации.
Извлекая журнал, я запускаю startxwin. Xterm открывается, но файла журнала нет!
Это означает, что XTerm не касается ЛЮБОГО файла конфигурации .. не в /etc/
не в ${HOME}
!
Единственное различие, которое я нашел в том, что при вызове echo $0 $-
в mintty
я получаю:
-bash himBH
... где, как и в XTerm я получаю:
bash himBH
Согласно информации по адресу:
Difference between Login Shell and Non-Login Shell?
Why 'echo $0' gives different result for two different terminals?
Мой Баш оболочки в Xterm является интерактивный (я флаг в $-
), не Логин (не - в передней части $0
) BASH
оболочка, в то время как мой mintty
является iteractive, логинBASH
оболочки.
Хорошо. Основываясь на второй ссылке выше, я все еще ожидаю, что мои не могут войти в системуинтерактивных снарядов для загрузки моего ~/.bashrc. Но опять же, как указано выше, он не только не загружает этот файл ... они не загружают ни один файл конфигурации bash, насколько я могу судить. Нет в ${HOME}
... нет в /etc/
.
Любая идея, как заставить не действующие в рамках Войти оболочки в Cygwin (т.е. XTerm
по умолчанию сеанс оболочки), чтобы правильно источник ~/.bashrc
или ~/.bash_profile
?
Я что-то не так?
Я ценю вашу помощь, но хочу дать конструктивную критику в отношении редактирования этого ответа. Я чувствую, что текст в '$ {HOME}' несколько посторонний, поскольку я специально показываю, что он правильно установлен в ** ** не-login ** оболочке, и я также заявляю, что он НЕ установлен в моих переменных среды Windows , Поэтому проблемы, которые возникают у вас, в реальности, я уже упоминал в тексте вопроса и разъяснил, что это не относится к моему развертыванию. –