맥에서 스크립트 실행시 profile에 입력한 alias 문제

thinga3의 이미지

제가 리눅스(centos 6.5)와 맥(씨에라)를 왔다갔다하며 작업을 하고 있는데
date 명령어 문제를 해결하지 못해 올립니다.

맥은 UNIX 기반이라 리눅스에서 사용되는 date와 맥에서 사용되는 date는 그 사용법이 달라
이를 맞춰줄려고 port를 이용해서 coreutils를 설치했습니다.

그리고 홈폴더의 .bash_profile에
alias date='/opt/local/libexec/gnubin/date'
를 추가하였습니다.

그냥 터미널 창에서 직접 date를 입력하면 coreutils의 date가 잘 실행됩니다.
ex)input: date -d '2017-03-01 11:31:54' +"%H:%M:%S"
output: 11:31:54

문제는 script를 사용했을 때인데
간단하게

#!/usr/bash
t=$(date -d '2017-03-01 11:31:54' +"%H:%M:%S")

로 작성해서 실행하면 자꾸 /bin/date가 실행이 되어

usage: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
[-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
에러가 발생합니다.

이 문제를 해결할 수 있는 방법 있을까요?
* /etc/paths 수정하지 않았습니다.

백연구원의 이미지

bashrc 와 bash_profile 의 차이점을 살펴보시면 도움이 될 것 같습니다.


소곤소곤

김정균의 이미지

alias는 sub shell에 전달되지 않습니다. 그러므로 두가지의 방법이 있습니다.

1. .bashrc 를 include 하기

#!/usr/bash
 
# 절대 경로로 작성하세요
source /path/.bashrc 
t=$(date -d '2017-03-01 11:31:54' +"%H:%M:%S")

2. script 내에서 path 재정의

#!/usr/bash
 
export PATH="/opt/local/libexec/gnubin/date:$PATH"
 
t=$(date -d '2017-03-01 11:31:54' +"%H:%M:%S")

보통 script에서는 두번째 방법을 사용하는 것이 좋습니다.