Параметр SSH для игнорирования скрипта .bashrc

8

У меня есть сервер, который при запуске запускает .bashrcследующую команду, /bin/watch ~/checker.bashкоторая, как и ожидалось, следит за этой командой при запуске сервера.

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

Я рассмотрел AcceptEnvдля передачи env vars, хотя это требует настройки сервера, который я хочу избежать.

Я также не хочу иметь 2 разных учетных записи для разных пользователей .bashrc.

Есть ли другой подход к этому?

ljs.dev
источник
почему вы не хотите два разных аккаунта? все «клиенты» (которые кажутся несвязанными
третьими

Ответы:

5

Вы можете активировать части своего, .bashrcтолько если он не вызывается через ssh.

например что-то вроде:

# within an SSH-session, ${SSH_TTY} will be set
if [ "x${SSH_TTY}" = "x" ]; then
  /bin/watch ~/checker.bash
fi
umläute
источник
работал как шарм, и все ответы здесь научили меня многому. Очень признателен!
ljs.dev
13

Два пути:

Не используйте bash для этой сессии, попробуйте dash (или / bin / sh):

ssh 127.0.0.1 /bin/dash

Используйте bash с параметрами команды, чтобы отключить обработку файлов запуска:

ssh 127.0.0.1 "bash --noprofile --norc"
Дэн Гартвейт
источник
ты пробовал свои способы? (особенно № 2)?
umläute
1
2-й метод просто висит для меня.
SLM
5
Второй метод отлично работает для меня. Вы не видите приглашение, так как PS1 не установлен, что является побочным эффектом выполнения в соответствии с запросом.
Дэн Гартвейт
оба просто висят за меня
Адитья Миттал
@AdityaMittal Оба будут зависать, если вы вызываете интерактивный сеанс, потому что нет запроса PS1. Попробуйте набрать 'ls /'
Дэн Гартвейт
2

Вы можете заменить строку / bin / watch .... на

 if ps ax | grep /bin/watch | grep -v grep  > /dev/null 2>&1
 then
    echo "Nothing to do"
 else
    /bin/watch ~/checker.bash
 fi

или что-то подобное.

MariusMatutiae
источник
Ок, отлично. В этом случае у меня может быть несколько оболочек, запускающих watchкоманду, но мне нравится решение.
ljs.dev