Bash, выполнить команду, но продолжить с интерактивной сессии

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

Проблема заключается в том, что я не могу понять, как указать команду для запуска bash, но продолжайте работу с интерактивным сеансом после выполнения команды.

Мой текущий снимок:

alias admin=pagsh -c "bash -c \"kinit [email protected]\""

но bash логически заканчивается сразу после завершения kinit. Как я могу нажимать пользовательскую команду на прошение интерактивного сеанса bash? Мне все равно нужно запускать .bashrc нормально, поэтому я не могу использовать --rcfile

Ответ 1

Мой совет будет использовать пользовательский файл bashrc с --rcfile, который будет генерировать ваш .bashrc, ex:

alias admin=pagsh -c "bash --rcfile myrc"

myrc:

source ~/.bashrc
kinit [email protected]

Ответ 2

Если вам нужна только строка или две, вы можете использовать классную bash функцию "Замена процесса" [1], чтобы обеспечить ее право на линию вызова. например (для запуска bash в конкретном виртуальном виртуальном пионе):

bash --rcfile <(echo '. ./pyvenv/bin/activate')

несколько строк не являются проблемой и не используются vars или помощники:

bash --rcfile <(echo echo "Starting at `date`"; echo cd $HOME)

[1] man bash и найдите "Замена процесса". Обратите внимание, что это не поддерживается во всех системах, но оно должно работать на всех Linux.

Ответ 3

Как насчет следующего?

alias admin='pagsh -c "bash -c \"kinit [email protected]; exec bash\""'

или даже

alias admin='pagsh -c "kinit [email protected]; exec bash"'

может работать. (У меня нет рабочей среды openafs, чтобы проверить ее правильно.)