Переключение на другую оболочку без копирования переменных среды

Из tcsh, если я попробую:

exec /home/path/to/my/zsh 

он работает (я вхожу в оболочку Zsh)

но если я попробую

 exec -c /home/path/to/my/zsh 

Я получил:

 -c Command not found 

Как переключиться на мою оболочку Zsh и запустить ее с «чистого листа»? (т.е. без переменных окружения, перенесенных из tcsh ).

  • Завершение первого аргумента cd OLD NEW
  • Линия Shebang для «run with $ SHELL»
  • Что такое расщепление слов? Почему это важно в программировании оболочки?
  • Сортировка строк с помощью escape-кодов ANSI
  • Как можно настроить псевдонимы bash для обработки пробелов в именах каталогов?
  • Как получить PID на терминал в начале * каждого * процесса?
  • Как изменить ключ для автозаполнения в ZSH?
  • zsh, модульность, несколько файлов .zsh и oh-my-zsh
  • One Solution collect form web for “Переключение на другую оболочку без копирования переменных среды”

    Не знаете, почему вы хотите это сделать, но вы можете сделать:

     exec env -i /home/path/to/my/zsh 

    Вероятно, многие вещи не будут работать должным образом, поскольку вам не хватают некоторые важные переменные среды, такие как $PATH , $HOME или $TERM .

    Если вы хотите перечислить несколько переменных и удалить остальные:

     exec env -i HOME="$HOME" TERM="$TERM" /home/path/to/my/zsh 

    Если вы хотите восстановить среду во время запуска tcsh , вы можете вставить ее в начало ~/.tcshrc :

     sh -c 'export -p' > ~/.initial-env 

    И тогда сделайте что-нибудь вроде:

     exec env -i sh -c ". $HOME/.initial-env; exec /path/to/zsh" 

    Это сохранение среды при запуске tcsh и ее восстановлении при выполнении zsh.

    Если вы хотите изменить свою оболочку на zsh то время как вам не нужно делать chsh (или zsh не установлен или установленному 20 лет), (возвращает память более 15 лет назад (черт! ), когда я был в той же ситуации (хотя с csh вместо tcsh )), вы можете заменить содержимое вашего ~/.login :

     setenv SHELL /path/to/zsh exec $SHELL -l 

    И удалите свой .tcshrc

    Установка $SHELL указывает предпочтение вашей оболочки (это то, что приложения, такие как xterm или vi … будут запускаться, когда им нужно запустить оболочку для вас).

    Поместите его в свой файл ~/.login чтобы он был выполнен только один раз. Надеемся, что больше не будет начато tcsh во время сеанса входа в систему, так как вы изменили $SHELL . Не имеет значения, укажите ли вы свои определения переменных среды в ~/.login или ~/.zprofile или ~/.profile . Тебе решать.

    Протестируйте с tcsh -l перед выходом из системы.

    Linux и Unix - лучшая ОС в мире.