Чи можна написати сценарій схожий
#!/bin/bash
alias foo="bar -options"
і отримати псевдонім, доданий до запущеної оболонки без source
(-ing) сценарій
source myscript
буде працювати, але просто
myscript
ні. Псевдонім встановлюється в підгрупі (процесу), але втрачається під час сценарію виходу
Будь-які можливості для зміни аліасу батьківської оболонки без source
Це звучить як проблема XY. Якщо ви поясните, чому ви хочете цього уникнути
—
John1024
source
Ви можете отримати відповіді, які набагато корисніші.
@DaoWen - ще раз спасибі, @ John1024 - де XY - я просто запитую "якщо це можливо" - я хотів би уникнути
—
Tom Freudenberg
source
тому що скрипт, над яким я працюю, має багато функцій через параметри. Тому всі функції викликаються без source
і тому я намагаюся звести до мінімуму помилки при використанні сценаріїв. Я не вважаю за краще іноді називати його myscript
а іноді source myscript
. Так що знову питання: чи можливо це чи ні? Дякуємо за допомогу.
@DoaWen що не працює:
—
Tom Freudenberg
$(echo 'alias foo="bar -option"')
- це все ще проблема :-)
@TomFreudenberg Філософія дизайну unix полягає в тому, що діти повинні ні вміти змінювати середовище батьків / псевдоніми / і т.д. Якщо у вас є псевдоніми, якими ви хочете поділитися між скриптами, не створюючи небажаних частин сценарію, стандартний підхід полягає в тому, щоб помістити ці визначення псевдонімів у окремий файл самостійно, після чого кожен скрипт, який хоче, щоб вони створили цей файл. Окремо хотілося б уточнити твердження: "має багато функцій через -опції". Що мається на увазі під "-особами"?
—
John1024
$(echo 'alias foo=bar')
підхід (де ви могли б замінитиecho
з деякою іншою складною командою / сценарієм) інше питання це, мабуть, єдиний інший варіант. Але насправді,source
є правильним інструментом для роботи тут. Я не розумію, чому ви так проти цього.