Ответ 1
Вам нужно сделать shopt -s expand_aliases
в script в дополнение к поиску ~/.bashrc
.
В ~/.bashrc я определил некоторые псевдонимы. Но я не могу использовать их в других сценариях оболочки, где я могу использовать только псевдонимы, определенные там. Несмотря на то, что я получил bashrc, он все еще не работал. Что мне делать?
PS. Я в bash.
Вам нужно сделать shopt -s expand_aliases
в script в дополнение к поиску ~/.bashrc
.
У меня была эта проблема, и я перезагрузил файл этой командой, чтобы исправить ее.
$ source ~/.bashrc
Существует способ сделать это глобально без добавления строк к каждому выполняемому 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]
Украден из 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
Затем вы можете свободно вызывать свою команду из своих скриптов.
Самый простой ответ - сделать две важные вещи, или она не будет работать.
#!/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