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

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

exec /home/path/to/my/zsh 

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

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

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

Я получил:

 -c Command not found 

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

  • Объединение расширения параметров с модификаторами в zsh
  • Как выполнить обратный поиск истории в vi-режиме ZSH?
  • ZSH: В чем разница между `.` и` source`?
  • Могу ли я выборочно отключить завершение zsh?
  • Отменить параметр, используемый в команде aliased?
  • псевдоним? не работает в zsh
  • Ctrl-Arrow больше не работает после установки Prezto
  • ANDed условное использование regexp и переменных
  • 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 - лучшая ОС в мире.