Подтвердить что ты не робот

Как использовать псевдонимы, определенные в .bashrc в оболочке script

В ~/.bashrc я определил некоторые псевдонимы. Но я не могу использовать их в других сценариях оболочки, где я могу использовать только псевдонимы, определенные там. Несмотря на то, что я получил bashrc, он все еще не работал. Что мне делать?

PS. Я в bash.

4b9b3361

Ответ 1

Вам нужно сделать shopt -s expand_aliases в script в дополнение к поиску ~/.bashrc.

Ответ 2

У меня была эта проблема, и я перезагрузил файл этой командой, чтобы исправить ее.

$ source ~/.bashrc 

Ответ 3

Существует способ сделать это глобально без добавления строк к каждому выполняемому script: с помощью переменной BASH_ENV.

Вот моя настройка для OS X 10.8.5:

/etc/launchd.conf:

setenv BASH_ENV /Users/DK/.env

~/.bash_profile:

# == Bash setup for interactive shells ==    
# === Environment for all shells ===
. $BASH_ENV    
# [skipped]

~/.env:

# == Setup for all shells ==
# This is executed for all interactive and for non-interactive shells (e.g. scripts)

shopt -s expand_aliases extglob xpg_echo

# [skipped] Misc. variables and PATH setup

# === General aliases ===

alias pause='echo "Press [Return] or [Enter] to continue..."; read' # read -p does not display prompt in Eclipse console

# [skipped]

Ответ 4

Украден из enzotib по адресу ubuntu: псевдоним устарел в пользу функций оболочки. На странице руководства bash:

For almost every purpose, aliases are superseded by shell functions.

Чтобы создать функцию и экспортировать ее в подоболочки, поместите следующее в ~/.bashrc:

petsc() {
    ~/petsc-3.2-p6/petsc-arch/bin/mpiexec "[email protected]"
}
export -f petsc

Затем вы можете свободно вызывать свою команду из своих скриптов.

Ответ 5

Самый простой ответ - сделать две важные вещи, или она не будет работать.

#!/bin/bash -i

# Expand aliases defined in the shell ~/.bashrc
shopt -s expand_aliases

После этого ваши псевдонимы, которые вы определили в ~/.bashrc, они будут доступны в вашей оболочке script (giga.sh или any.sh) и любой функции или дочерней оболочке внутри такого script.

Если вы этого не сделаете, вы получите сообщение об ошибке:

your_cool_alias: command not found