Дочірній баш ідентичний виклику батьків


0

Чи можна викликати такий баш, що все про моє оточення (псевдоніми, функції, експортовані / неекспортовані змінні тощо) буде присутнє в новій оболонці?

Я б погодився просто отримати змінні оболонки, які не входять до мого оточення. Я бігаю, bash --norcі перше, що помічаю, - я втратив $ PS1 і свої lsкольори. Я міг би просто експортувати ці змінні перед викликом bash, але я переживаю за цілий ряд інших речей, які мені можуть пропустити.

Відповіді:


1

Ви можете заглянути в команду aliasта setкоманду. Якщо запустити без параметрів, aliasвідобразить усі визначені параметри та setперелічить усі змінні та функції. Переміщення виводу цих команд у тимчасовий файл, а потім наказування bash, щоб прочитати цей файл як rc-файл, може виконати те, що ви шукаєте.


Це найближче, доки я був, але нарешті прийняв, що те, що я справді хочу, неможливо. Я хочу написати сценарій Perl, який задає моє середовище. Це дозволить зробити деякі речі, встановити деякі змінні та, нарешті exec bash. Я не можу дозволити собі дозволити оточенню заважати файли rc init, але я хочу, щоб такі речі, як забарвлення ls та спуск PS1. Я думаю, що, можливо, найкраще зробити, щоб сценарій Perl надрукував зміни середовища, і користувач міг викликати його зворотними кліщами.
Ендрю Вуд

залежно від складності сценарію perl, нехай він записує його власний тимчасовий файл rc, а потім викликає bash з: bash --rcfile <path-to-the-temp-rc-file> Це не завантажує систему в ширину або користувач rc файл, вказаний лише файл.
cledoux

Я почав робити це саме так, коли зрозумів, що сценарій не матиме доступу до псевдонімів та функцій його батьків - лише до оточення.
Ендрю Вуд

0

Немає.

Однак можна ввімкнути автоматичний експорт функцій та змінних, додавши set -aвгорі rcсценарію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.