Игнорировать переменные из другой оболочки

Я нахожусь на рабочей станции Linux в сети, со "старым" дистрибутивом. Кроме того, оболочка входа в систему обязательна для CSH. Я уже спрашивал администраторов, можно ли переключиться на другое (я хотел бы иметь bash), но это было не по пути...

Поэтому я запускаю bash из командной строки как интерактивную оболочку без регистрации (на самом деле я использую gnome и gnome-терминал с профилем, который запускает / bin / bash -i в качестве команды). Много, если не все мои скрипты используют bash, поэтому я запускаю их из него, вызывая bash со скриптом. Это грязно, но это работает.

У меня есть.cshrc с переменными среды, псевдонимами и параметрами для csh, определенными в файлах.login и.cshrc в моем $HOME. У меня также есть файл.bashrc/.bash_profile(который перенаправляет на.bashrc, если это интерактивная оболочка)/. Bash_aliases с некоторыми другими переменными и некоторыми такими же. Когда я запускаю оболочку bash, я наследую переменные окружения, определенные в моем файле.login. Я хотел бы игнорировать все, что настроено в этом, когда я запускаю bash.

Я хотел бы знать, есть ли опция для запуска bash, игнорируя все другие переменные среды, ранее определенные из моего сеанса входа в CSH, когда я запускаю свою оболочку BASH.

Есть ли у вас какие-либо идеи?

Спасибо

2 ответа

Решение

Вместо того, чтобы вручную сбрасывать переменные, которые вы не хотите наследовать, запустите bash, используя env команда:

env -i bash

-i флаг причины bash игнорировать его унаследованную среду.

Вы хотите запустить bash как неинтерактивную оболочку внутри CSH с переменными bash, определенными в.bash_profile, верно?

Вы могли бы дать стрелять:

./bash --login
source ./bash --login

но я не могу это проверить.

Другие вопросы по тегам