linux - linux不能用分号设置环境变量

标签 linux ubuntu environment-variables

这个问题在这里已经有了答案:





When should I wrap quotes around a shell variable?

(6 个回答)


去年关闭。




我正在尝试在 ubuntu 上使用分号设置此环境变量:
BS_DATABASE_CONNECTION=connection;Data Source=source;Initial Catalog=catalog;Persist Security Info=info;User ID=userid;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;
但我得到这些错误:
数据:找不到命令
初始:找不到命令
坚持:找不到命令
用户:找不到命令
我该如何正确设置?

最佳答案

问题是 ;被视为控制运算符,字符串 BS_DATABASE_CONNECTION=connection;Data Source=source;...被解释为多个命令。第一个是命令BS_DATABASE_CONNECTION=connection ,第二个是命令Data Source=source等。一种解决方案是使用引号:

BS_DATABASE_CONNECTION='connection;Data Source=source;Initial Catalog=catalog;Persist Security Info=info;User ID=userid;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;'
但是对于这么长的值,执行以下操作可能更具可读性:
BS_DATABASE_CONNECTION="\
connection;\
Data Source=source;\
Initial Catalog=catalog;\
Persist Security Info=info;\
User ID=userid;\
Password=password;\
MultipleActiveResultSets=False;\
Encrypt=True;\
TrustServerCertificate=False;\
"
或者
BS_DATABASE_CONNECTION=''
for x in 'connection' \
        'Data Source=source' \
        'Initial Catalog=catalog' \
        'Persist Security Info=info' \
        'User ID=userid' \
        'Password=password' \
        'MultipleActiveResultSets=False' \
        'Encrypt=True' \
        'TrustServerCertificate=False' \
; do
        BS_DATABASE_CONNECTION="${BS_DATABASE_CONNECTION}${x};"
done
或者
read BS_DATABASE_CONNECTION << EOF
connection;\
Data Source=source;\
Initial Catalog=catalog;\
Persist Security Info=info;\
User ID=userid;\
Password=password;\
MultipleActiveResultSets=False;\
Encrypt=True;\
TrustServerCertificate=False;
EOF
或者
BS_DATABASE_CONNECTION=$( tr \\n \; << EOF
connection
Data Source=source
Initial Catalog=catalog
Persist Security Info=info
User ID=userid
Password=password
MultipleActiveResultSets=False
Encrypt=True
TrustServerCertificate=False
EOF
)
请注意,这不是环境变量。它只是一个 shell 变量。如果您希望它处于子shell 环境中,则应将其导出。是否在 shell 的环境中应该是完全不相关的,环境变量和导出的 shell 变量之间没有功能上的区别。

关于linux - linux不能用分号设置环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67505935/

相关文章:

linux - 权限似乎是对的,是错的

php - 在 Laravel 5+ Ubuntu 14.04 上出现 500 Internal Server Error (require() failed opening required path)

linux - Shell 变量扩展 - 使用 env 调用实用程序时的间接寻址

windows - 跨平台、Apache Ant、构建的公共(public)环境变量列表

regex - 匹配特定模式后在数字之间插入空格

linux -/etc/rc.local 和~/.bashrc 有什么区别?

node.js - npm install, node-gyp build error 仅在两台相同机器中的一台上

python - Ubuntu 访问权限 - Mod_Python 权限被拒绝

java - 如何设置_JAVA_OPTIONS中的所有时区变量

linux - 我可以使用什么算法来生成唯一 MAC 地址的 48 位哈希值?