Проблема "породження" баш-псевдонімів


0

В моєму ~/.shortcuts, я маю посилання на деякі часто використовувані каталоги.

У .bashrc(OS X) я роблю це:

ls -1 ~/.shortcuts | xargs -I {} alias {}="'cd -P ~/.shortcuts/{}'"

Коли я запускаю aliasв терміналі, вихід показує щойно додані псевдоніми, але жоден з псевдонімів не працює. Чому?

У мене є деякі псевдоніми, як alias ll='ls -l'визначено в .bash_aliases. Ведення . ~/.bash_aliasesв .bashrcнавантаженнях мої власні псевдоніми прекрасно. Але, коли я перенаправляю xargs -tвисновок у файл tmp та надсилаю його у bashrc (так само, як я джерело .bash_aliases), він не працює.

Що я роблю неправильно?

Відповіді:


5

Він не працює, тому що aliasвін запускається в підзарядці, яка виходить відразу після цього. Це ніколи не впливає на оболонку, яка запустила трубопровід.

Спробуйте спробувати щось на кшталт:

for short in ~/.shortcuts/* ; do
  alias $(basename $short)="cd -P $short"
done

Це передбачає, що у вашій папці немає файлів із забавними символами (як, наприклад, пробіли).

(Взагалі кажучи, не розбирайте вихідls , використовуйте функції глобальної оболонки вашої оболонки.)


Щодо другої частини запитання: я здогадуюсь, джерело файлу з псевдонімами не спрацювало, тому що я розбирав висновок ls?
harithski

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