Як виправити завантаження терміналу ~ / .bashrc на OS X Lion [закрито]


176

Щоразу, коли я відкриваю нову вкладку в Terminal за допомогою Cmd+ T, вона відкриває bash у тому самому каталозі, що і попередня. Це добре працює, коли я перебуваю в ~каталозі, але якщо я десь інший, я отримую помилку при завантаженні.bashrc

Last login: Sat Oct 15 21:10:00 on ttys002
-bash: .bashrc: No such file or directory
Jakub-Arnolds-MacBook-Pro:projects darth$ 

Схоже, .bashrcце завантажено через відносний, а не абсолютний шлях, тому що якщо я це зробити source ~/.bashrc, все працює нормально.

завантажений bashrc

Я думаю, це проблема, пов'язана з OS X Lion, тому що до оновлення до Snow Leopard у мене не було тієї самої проблеми. Але це може бути викликано тим, що Terminal завжди відкривається в ~, я не пам'ятаю, чи намагався він відкрити той самий каталог.

Однак питання залишається тим самим, як я можу зробити термінальне навантаження ~/.bashrcчерез абсолютний шлях, а не відносний?


1
це питання слід перенести на apple.SE (якщо можливо?), а не закривати.
Спарр

@Sparr Я повністю з вами згідний, але модератори переносять лише новіші питання, а не старіші. Дивіться дискусію тут
рюффп

Відповіді:


357

Термінал відкриває оболонку входу. Це означає, що ~/.bash_profileбудуть виконані, а ~/.bashrcне.

Рішення для більшості систем полягає в тому, щоб "вимагати" ~/.bashrcв ~/.bash_profile: просто помістіть цей фрагмент у свій ~/.bash_profile:

[[ -s ~/.bashrc ]] && source ~/.bashrc

8
Хтось може пояснити, що [[ -s /file/path ]]робить? Спроба Google пояснити не надто просто.
Шейн

18
З man bash: -s файл True, якщо файл існує і має розмір більше нуля.
ckruse

1
"Термінал відкриває оболонку входу" - що таке інші оболонки ОС? Де я можу знайти більше документації про це?
dknight

4
Існують так звані „інтерактивні оболонки” та „вхідні оболонки”. Ваш посібник з bash ( man bash) розповідає про це і пояснює це, розділ ІНВОКАЦІЯ (просто шукайте INVOCATIONпісля дзвінка man bash, набравши /INVOCATION)
ckruse

3
Я не бачу, як питання, що стосується ситуації виконання коду, вирішене рядком коду, є "поза темою" на сайті програми програмування.
Хелдар

26

Перейменування .bashrcв .profile(або м'якому зв'язуванні останнього до першого) слід також зробити трюк. Дивіться тут .


Або ви можете їх символізувати: cd && ln -s ./.bashrc ./.profileЗауважте, що символьні посилання чутливі щодо шляху файлу, я вважаю, що використання вищевказаного синтаксису працює, але щоб бути впевненим, ви можете використовувати абсолютні шляхи в будь-якому випадку.
Стів Беннер

1
Ага, ні? Ці файли мають різні цілі. Якщо у вас є синтаксис Bash, .profileви будете ламати регулярно sh.
tripleee

14

У мене є таке ~/.bash_profile:

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

Якби я мав .bashrcзамість цього ~/.bashrc, я б бачив той самий симптом, який ви бачите.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.