Почему команды в .bashrc не выполняются?

У меня есть следующие строки в моем .bashrc, которые я хотел бы выполнить при входе в систему через ssh.

csh
source /x/y/.cshrc
source /x/y/z/sourceme

Но проблема в том, что правильно выполняется только первая команда. (появляется приглашение csh) Следующая исходная команда не выполняется. Я заметил, что есть некоторые ошибки, которые выдаются из bash (не csh) для команды «источник».

Я где-то читал, что это может быть связано с тем, что .bashrc выполняется несколько раз. И исходные команды пытаются выполняться в самом bash, а не в csh.

Я хочу, чтобы все три команды выполнялись одна за другой при входе в систему. Как мне это сделать? Я пробовал .bash_profile .bash_login и т. д. Также у меня нет прав на запись в /etc/profile


person gkns    schedule 23.08.2012    source источник


Ответы (3)


«Команды» интерпретируются оболочкой bash. Это не байты, которые нужно передать терминалу. Что происходит, так это то, что csh работает в интерактивном режиме, и как только он выходит из bash, он получает два (предположительно csh) файла сценария.

Похоже, вы просто пытаетесь изменить свою оболочку на csh (почему, я понятия не имею). Вы пытались использовать chsh для этого?

person Andy Ross    schedule 23.08.2012
comment
Я пытаюсь изменить оболочку на csh и запустить несколько сценариев для добавления некоторых переменных среды для csh. В настоящее время у меня нет bash-версии этого сценария настройки среды. - person gkns; 23.08.2012

Если вы хотите запускать эти команды в csh, переместите их в свой .cshrc.

Слово предостережения, хотя; использование csh абсолютно для всего вызывает вопрос: вы действительно думаете, что знаете, что делаете? Почему?

person tripleee    schedule 23.08.2012
comment
Использование csh не только ставит вопрос, но и дает на него ответ! - person William Pursell; 24.08.2012

source — это "башизм", то есть это не будет работать в других оболочках. Вместо этого используйте ..

person Burhan Khalid    schedule 23.08.2012