Windows(CRLF)์์ ์์ฑํ ํ์ผ์ Unix/Linux(LF) ๊ณ์ด ์๋ฒ๋ก ์ ๋ก๋ํ๋ฉด, ๋ผ์ธ ๋์
^Mํน์๋ฌธ์๊ฐ ๋ถ์ด ์คํฌ๋ฆฝํธ ์คํ ์๋ฌ(bad interpreter)๋ฅผ ์ ๋ฐํฉ๋๋ค. AIX ํ๊ฒฝ์์๋ ํ์คํ๊ฒ ๋์ํ๋ Perl ๋ช ๋ น์ด๋ฅผ ์ด์ฉํ ์ผ๊ด ์ ๊ฑฐ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํฉ๋๋ค.
0. ์์ธ ๋ฐ ์ฆ์ (Context)
์ด์์ฒด์ ๋ง๋ค ์ค๋ฐ๊ฟ(New Line)์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ๋ค๋ฆ ๋๋ค.
- Windows: CR(Carriage Return, \r) + LF(Line Feed, \n)
- Unix/Linux/AIX: LF(\n)
FTP ์ ์ก ์ ASCII ๋ชจ๋๊ฐ ์๋ Binary ๋ชจ๋๋ก ์ ์กํ๊ฑฐ๋, ๋จ์ ๋ณต์ฌ/๋ถ์ฌ๋ฃ๊ธฐ๋ฅผ ํ ๊ฒฝ์ฐ Windows์ CR(\r) ๋ฌธ์๊ฐ ๊ทธ๋๋ก ๋จ์ vi ์๋ํฐ์์ ^M์ผ๋ก ํ์๋ฉ๋๋ค.
Test Environment
- OS: AIX (๋๋ Linux)
- Shell: sh, ksh, bash
1. ๋ฌธ์ ํ์ธ (Issue Identification)
์ ์คํฌ๋ฆฝํธ ์คํ ์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฑฐ๋, vi๋ก ํ์ผ์ ์ด์์ ๋ ๋ผ์ธ ๋๋ง๋ค ^M์ด ๋ถ์ด์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
vi ์๋ํฐ ํ๋ฉด
#!/bin/sh^M
#./startServer.sh server_name^M
#./stopServer.sh server_name -username username -password password^M
2. ํด๊ฒฐ ๋ฐฉ๋ฒ A: Perl ๋ช ๋ น์ด ์ฌ์ฉ (๊ถ์ฅ)
AIX์ ๊ธฐ๋ณธ sed ๋ช
๋ น์ด๋ -i(ํ์ผ ์ง์ ์์ ) ์ต์
์ ์ง์ํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฐ๋ผ์ Perl์ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ํธํ์ฑ์ด ์ข๊ณ ๊ฐํธํฉ๋๋ค.
๋ช ๋ น์ด ๊ตฌ๋ฌธ
^M์ ์ง์ ์
๋ ฅํ๊ธฐ ๋ฒ๊ฑฐ๋ก์ฐ๋ฏ๋ก, 8์ง์ ์ฝ๋์ธ \015๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
# ๊ตฌ๋ฌธ: perl -pi -e 's/์ฐพ์๋ฌธ์/๋ฐ๊ฟ๋ฌธ์/g' [ํ์ผ๋ช
]
perl -pi -e 's/\015//g' stopWasAll.sh
๋ค์ค ํ์ผ ์ผ๊ด ์ฒ๋ฆฌ
์์ผ๋์นด๋(*)๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํ์ผ์ ํ ๋ฒ์ ๋ณํํ ์ ์์ต๋๋ค.
# ํ์ฌ ๊ฒฝ๋ก์ ๋ชจ๋ .sh ํ์ผ์์ CR ์ ๊ฑฐ
perl -pi -e 's/\015//g' *.sh
3. ํด๊ฒฐ ๋ฐฉ๋ฒ B: vi ์๋ํฐ ๋ด๋ถ ์นํ
ํ์ผ์ ์ด์ด๋์ ์ํ์์ ์์ ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค.
vi๋ก ํ์ผ ์ด๊ธฐ- ๋ช ๋ น ๋ชจ๋(ESC)์์ ์นํ ๋ช ๋ น์ด ์ ๋ ฅ
:%s/^M//g
^M์ Shift + 6, M์ ํ์ดํํ๋ ๊ฒ์ด ์๋๋๋ค.๋ฐ๋์
Ctrl + V๋ฅผ ๋๋ฅธ ์ํ์์ Ctrl + M์ ๋๋ฌ์ผ ์
๋ ฅ๋ฉ๋๋ค.
4. ํด๊ฒฐ ๋ฐฉ๋ฒ C: dos2unix ์ ํธ๋ฆฌํฐ
๋ฆฌ๋ ์ค(CentOS/Ubuntu) ํ๊ฒฝ์ด๋ผ๋ฉด ์ ์ฉ ๋๊ตฌ๋ฅผ ์ค์นํ์ฌ ํด๊ฒฐํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ฝ์ต๋๋ค.
# ์ค์น (CentOS)
yum install -y dos2unix
# ๋ณํ
dos2unix stopWasAll.sh
5. ๊ฒ์ฆ (Verification)
๋ณํ ํ ๋ค์ vi๋ก ํ์ผ์ ์ด์ด ^M ๋ฌธ์๊ฐ ์ฌ๋ผ์ก๋์ง ํ์ธํฉ๋๋ค.
test1 root [/was8/bin]# vi stopWasAll.sh
#!/bin/sh
#./startServer.sh server_name
#./stopServer.sh server_name -username username -password password
#PropFilePasswordEncoder.sh
#export LANG=en_us.utf8
๊น๋ํ๊ฒ ์ ๋ฆฌ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.