Как заставить ssh admin@nas command работать, если command находится в /opt/bin?

В моем файле NAS QNAP /root/.ssh/rc:

echo "old path is $PATH"
export PATH=/opt/bin:/opt/sbin:$PATH
echo "new path is $PATH"

на моей машине:

~$ ssh admin@nas 'echo $PATH'

возвращается

old path is /usr/bin:/bin:/usr/sbin:/sbin
new path is /opt/bin:/opt/sbin:/usr/bin:/bin:/usr/sbin:/sbin
/usr/bin:/bin:/usr/sbin:/sbin

поэтому переменная пути не сохраняется. Как я могу этого достичь?

Редактировать: Как я уже упоминал в своем комментарии ниже, я пытаюсь использовать команду git or, более конкретную git-upload-pack и git-receive-pack и, возможно, некоторые другие. Я хочу использовать их в разных местах и случаях и не хочу настраивать git-конфигурацию на каждой машине, на которой я использую его, или учить свою среду IDE взаимодействовать с моим NAS, а скорее иметь свои стандарты, соответствующие NAS. Итак, я решил, что все, что мне нужно, это установить правильный $PATH

Редактировать II: то, что я до сих пор пробовал, также вставлял export PATH=... а также добавлял другое echo (чтобы убедиться, что они запущены) в ~/.bash_profile , to /etc/profile и в ~/.bashrc , Очевидно, что ни один из них даже не выполняется, когда я запускаю неинтерактивную команду, как описано выше. Если я сделаю ssh admin@nas все они будут выполнены, но это не поможет

2 ответа2

1

Если вы вошли в систему как администратор, ~/.bashrc не используется, а ~/.profile -. Таким образом, вы можете добавить это в .profile:

export PATH=\
/bin:\
/sbin:\
/opt/bin:\  #<--- HERE IT IS NOW
/usr/bin:\
/usr/sbin:\
/usr/bin/X11:\
/usr/local/bin

И PATH будет загружаться так, когда вы входите в систему как администратор. То, что я сделал на моем nas, это то, что я добавил это в .bashrc и изменил .profile, чтобы иметь только 1 строку:

source ~/.bashrc

Поэтому, когда вы входите в систему как администратор, вы по-прежнему настраиваете SH с помощью .bashrc.

РЕДАКТИРОВАТЬ: Теперь я понимаю, что вы хотите сделать ...

Просто создайте символические ссылки на эти два двоичных файла внутри /usr /bin. Например:

cd /usr/bin && ln -s /opt/bin/git-upload-pack 
0

Вы можете ввести real address команды вместо команды в ssh admin @ nas command . Как ниже:

ssh admin@nas /opt/bin/command-name

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .