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

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

  • Не можете использовать! $ В скрипте?
  • @ и * в петле bash
  • Странное поведение в $ (dirname `readlink -f $ 0`)
  • Разрешение bash-c в подселле
  • Ошибка скрипта Bash: ожидается целочисленное выражение
  • Изменение IFS не вступает в силу
  • Как я могу распечатать и выйти из bash, если оператор backtick не работает
  • разница между `for i в {1 .. $ N}` и `для i в $ (seq 1 1 $ N)`
  • Изменение IFS не вступает в силу
  • Значение «: -» в bash
  • Параметры Bash и интерактивные оболочки
  • Проверьте, существует ли имя файла из встроенной команды
  • 2 Solutions collect form web for “Можно ли определить, где находится .bash_profile в командной строке 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 
    Linux и Unix - лучшая ОС в мире.