CentOS의 bash 쉘에 있는 ~/.bash_profile 파일에서 함수를 정의하는 올바른 방법은 무엇입니까?

CentOS의 bash 쉘에 있는 ~/.bash_profile 파일에서 함수를 정의하는 올바른 방법은 무엇입니까?

CentOS에서 bash 쉘을 사용하고 있습니다. PostGres 14 쿼리를 실행하고 결과를 출력하는 함수를 정의하고 싶습니다.

eth_price 2023-12-06 10:05

내 ~/.bash_profile 파일에서 내가 정의한

eth_price() {
  timestamp="$1:00"  # Append ":00" to the provided timestamp
  PGPASSWORD=$DB_PASS psql -U $DB_USER -d $DB_NAME -c "select price from cryptocurrencyprice p, cryptocurrency c where c.id = p.crypto_currency_id and c.abbrev = 'ETH' and p.created <= '$timestamp' order by created desc limit 1;"
}

불행히도 내가 달릴 때

source ~/.bash_profile

오류가 발생했습니다.

-bash: /home/myuser/.bash_profile: line 31: syntax error near unexpected token `('
-bash: /home/myuser/.bash_profile: line 31: `eth_price() {'

내 기능을 정의하는 올바른 방법은 무엇입니까?

편집하다:

버전 출력입니다..

$ bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

문제를 더욱 분리하기 위해 아래와 같이 전체 ~/.bashrc 파일을 만들었습니다.

# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=

# User specific aliases and functions
eth_price() {
  timestamp="$1:00"  # Append ":00" to the provided timestamp
  PGPASSWORD=$DB_PASS psql -U $DB_USER -d $DB_NAME -c "select price from price p, currency c where c.id = p.id and c.abbrev = 'ETH' and p.created <= '$timestamp' order by created desc limit 1;"
}

흥미롭게도 이는 실패합니다.

$ source ~/.bashrc
-bash: /home/myuser/.bashrc: line 12: syntax error near unexpected token `('
-bash: /home/myuser/.bashrc: line 12: `eth_price() {'

하지만 효과가 있었어...

$ sh ~/.bashrc
$ 

관련 정보