Intereting Posts
Что такое столбец STATE команды TOP на Solaris? Как исправить, возможно, очищенный MBR после установки centOS? Выполнить команду за две минуты Как Эластичный IP-адрес отличается от статического IP-адреса? Какой файл загружается и выполняется неинтерактивной оболочкой без входа? Почему внешний жесткий диск работает слишком медленно? Почему нельзя использовать `su` для переключения на пользователей с пустым паролем? fuser vs lsof для проверки используемых файлов Как перенаправить вывод tarsnapper в / dev / null? Как загрузить Slackware со второго жесткого диска, когда он был установлен первым? Использование модификаторов Perl-совместимого Regex (PCRE) в grep Использование aplay и выбор того, какой вывод на карте использовать Как создать символическую ссылку, которая открывает (буквально) целевой файл Вход в систему или подключение к USB-устройству пробуждает сетевой принтер Как выполнить скрипт R, связав его с сценарием оболочки в Linux?

Можно ли определить, где находится .bash_profile в командной строке bash?

Я запускаю bash программно из объектива c, чтобы создать приложение, подобное терминалу. После запуска я хотел бы выполнить некоторые команды до того, как переключиться на пользователя. Обычно они были в .bash_profile . Этот файл недоступен для меня, а не то, что я хотел бы портить, так или иначе, поскольку я не хочу использовать стандартную среду bash для пользователя. Я попробовал ключ -c script.sh но после того, как script.sh завершен, bash завершает работу. Существуют ли какие-либо другие параметры, кроме программной команды ввода команды, которую мне нужно запустить? Я бы предпочел, чтобы пользователь не видел все.

Вы можете попробовать следующее:

 bash --rcfile <your_rc_file> --noprofile -i 

Что означают опции:

  • --rcfile : использовать в качестве файла запуска следующее:
  • --noprofile : не обрабатывать файлы .bash_profile , .profile , /etc/profile и т. д. Файлы обычно используются в оболочке входа.
  • -i : Его интерактивная оболочка (вроде как противоположная -c которая завершает onces аргумент -c , обрабатывается).

Манифест bash неплох. Вы можете использовать его для получения более подробной информации о том, как запустить bash.

Вы можете вызывать bash с помощью --rcfile myfile и иметь test -f ~/.bashrc && source ~/.bashrc в конце myfile . Предполагается, что вы запускаете интерактивную, но не входящую в систему учетную запись.

Для оболочки входа вы должны были бы имитировать поведение bash в отношении /etc/profile , .profile , .bash_profile , .bash_login и .bash_logout , что является утомительным, но выполнимым. Вы все равно будете запускать bash --rcfile myfile но myfile будет содержать

 test -r /etc/profile && source /etc/profile for f in ~/.bash_profile ~/.bash_login ~/.profile do if test -r $f then source $f break fi done trap 'source ~/.bash_logout' 0