Изменение значения $HOME в .bashrc

В первую очередь, немного фона. Я приношу извинения заранее за неправильное употребление терминологии. Исправьте меня в случае необходимости.

Для моей работы я собираюсь быть рабочими моделированиями удаленно через ssh на нескольких машинах человечности. Эти машины находятся в сети, и моя учетная запись связана через всех них, т.е. $HOME /home/links/Ogaday и зеркально отражается через каждую машину. Таким образом, я делаю каталог на одной машине в той папке, и это появляется в другой машине (это - случай, где я не знаю, как использовать корректные термины). Существует также локальная память на каждой машине, доступной каждым пользователем на той машине, названной /scratch/. Я сделаю каталог в /scratch/ для выполнения в моей фактической работе потому что я не думаю, что у меня есть достаточно памяти на моей учетной записи для выполнения моделирований в $HOME, и это будет быстрее, потому что это все локально, я принимаю.

Теперь, существует программное обеспечение, установленное на тех машинах, которые я должен использовать, и оно установлено в каталогах, к которым у меня нет доступа для записи (/usr/local/software/). Однако то программное обеспечение имеет сценарий удара, который устанавливает переменные среды. Я, как предполагается, добавляю сценарий удара (source /usr/local/software/etc/bashrc) к $HOME/.bashrc для установки необходимых переменных среды. Довольно стандартный до сих пор, это настраивает все, чтобы это программное обеспечение работало, когда я вхожу в систему, корректный? Теперь, я думаю, что программное обеспечение на этих компьютерах не было настроено правильно, потому что .../etc/bashrc как предполагается, устанавливает названную переменную $SOFTWARE_INST_DIR, каталог установки. По умолчанию это $HOME/software, и необходимо изменить это bashrc файл так, чтобы это вместо этого установило его на /usr/local/software. Конечно, у меня нет доступа для записи к к .../etc/bashrc. Существуют другие подобные проблемы, это - просто вещь, которая перестала работать сначала.

Как фиксация, я скопировал тот файл в $HOME/software-etc/bashrc и добавленный source $HOME/software-etc/bashrc кому: $HOME/.bashrc вместо добавления source /usr/local/software/etc/bashrc, так, чтобы я мог отредактировать переменные, это присваивается. Есть ли что-нибудь существенно неправильно с этим? Я думал, что другое решение будет к, вместо того, чтобы копировать bashrc файл с местоположения установки программного обеспечения, добавляя export $HOME=/scratch/ogaday к .bashrc, который я принимаю, повторно присвоил бы мой корневой каталог для царапания. Я корректен? Действительно ли это опасно? Я действительно не использовал бы эти машины ни для чего больше кроме выполнения долгих моделирований на них.

PS: конечное решение состояло бы в том, чтобы попросить, чтобы парни IT изучили его, я предполагаю! Я сделал бы быстрое исправление хотя, если это возможно.

3
задан 2 October 2015 в 13:54

1 ответ

Нет, нет ничего неправильно с копированием емкостно-резистивного файла где-то в другом месте. Тем не менее, в то время как можно действительно изменить Ваш $HOME путем добавления HOME=/foo к одному из чтения файлов на запуске (~/.profile, например), который является действительно не хорошей идеей. HOME используется многими вещами, не только Вашими сценариями и нет никакой причины изменить его, так как это может иметь непреднамеренные последствия.

Например, конфигурационные файлы по умолчанию для множества программ, включая Вашу оболочку, хранятся в $HOME. При изменении этого настройки будут потеряны.

Теперь, если я понимаю правильно, Ваша основная цель здесь состоит в том, чтобы иметь $HOME/software точка к /usr/local/software. Вместо того, чтобы копировать файлы вокруг, простое решение состояло бы в том, чтобы сделать $HOME/software ссылка, указывающая /usr/local/software.

  1. Переименовать $HOME/software (если это уже существует):

    mv $HOME/software $HOME/software.old
    
  2. Сделайте ссылку названной $HOME/software это указывает на /usr/local/software:

    ln -s /usr/local/software $HOME/software
    

Теперь, что-либо поиск $HOME/software на самом деле найдет /usr/local/software вместо этого.

Точно так же, чтобы сделать Вашу работу локально над каждой машиной, создайте каталог в /scratch и затем свяжите его с Вашим $HOME:

mkdir /scratch/ogaday
ln -s /scratch/ogaday $HOME/work

Теперь, все Вы выполняете $HOME/work на самом деле произойдет в /scratch/ogaday.

Наконец, примите во внимание, что существуют различные типы оболочки. Когда Вы регистрируетесь на пути ssh, Вы выполняете интерактивную оболочку входа в систему и во многих системах, $HOME/.bashrc проигнорирован теми оболочками. В то время как Ubuntu конкретно также читает $HOME/.bashrc, для таких оболочек много других дистрибутивов не делают. Поэтому более безопасно использовать $HOME/.profile и нет $HOME/.bashrc установить переменные среды. Посмотрите здесь для объяснения того, какие файлы читаются когда.

4
ответ дан 1 December 2019 в 15:56

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

Похожие вопросы: