Почему «псевдоним» не работает в файле сценария Bash [dубликат]

Ubuntu использует проверенную версию Gnome, которая старше. Если вы хотите использовать последнюю версию, установите Ubuntu Gnome, а затем добавьте Gnome PPA, но приготовьтесь к некоторым проблемам. Я использую Arch с Gnome 3.2, до сих пор это было нормально, но проблемы возникали время от времени.

56
задан 21 June 2015 в 14:34

3 ответа

Если вам нужно переключить версии Ruby, попробуйте rvm.

7
ответ дан 15 August 2018 в 14:49

Вы можете написать функцию в вашем .profile для переключения псевдонимов

function toggle-ruby() {
  if [ "$1" == "1.9" ]; then
    alias ruby=/opt/local/bin/ruby1.9
  else
    alias ruby=/opt/local/bin/ruby1.8
  fi
}

, после чего вы можете запустить:

toggle-ruby 1.9

или

toggle-ruby 1.8

для переключения назад и вперед.

7
ответ дан 15 August 2018 в 14:49

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

Вы можете исправить это очень просто, просто добавив следующую строку в начало вашего сценария, чтобы включить расширение псевдонима:

shopt -s expand_aliases

Эта проблема прослушивала меня, поэтому я занимался исследованиями, а затем написал сообщение в блоге, как только выяснил, как исправьте это для себя: опубликуйте об использовании псевдонима из сценариев оболочки Linux.

Конечно, сразу после того, как я выяснил эту часть, я обнаружил, что, хотя она работает для того, что вам нужно, она не будет работать, если у вас есть подоболочка в пределах подоболочки. Я все еще смотрю на исправление этой проблемы, вот как я натолкнулся на ваш вопрос. В сообщении в блоге я упоминаю дешевый хак, который я использую, чтобы захватить псевдоним в сценарии оболочки. Это не изящно, но на самом деле это работает даже в этой проблеме с несколькими подсечками, которые у меня есть.

90
ответ дан 15 August 2018 в 14:49
  • 1
    Это гораздо лучший ответ, чем принятый. Если вы приземлились здесь из поиска, это, вероятно, то, что вы хотите. – bahamat 18 January 2013 в 02:42
  • 2
    даже если я этого не делал, это именно то, что я искал! благодаря – Filipe Pina 6 February 2013 в 18:09
  • 3
    Гораздо лучше, чем принятый. Спасибо. – srain 17 February 2014 в 12:32
  • 4
    Лучший ответ. Вы должны добавить эту вершину своего скрипта bash, а не ~ / .bash_profile. – Inanc Gumus 18 June 2014 в 20:19
  • 5
    Не работает на ubuntu 14.04. Я хочу, чтобы скрипт менял свой псевдоним. Но он просто меняет псевдоним во время запуска скрипта. – Mithril 31 December 2015 в 11:15

Другие вопросы по тегам:

Похожие вопросы: