Чи можна написати сценарій схожий
#!/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є правильним інструментом для роботи тут. Я не розумію, чому ви так проти цього.